Аутентификация Google OAuth 2.0 в установленном приложении C#

Я пытаюсь добавить аутентификацию OAuth в программу C#, которая работает с Gmail с использованием IMAP. Фактическая команда AUTHENTICATE XOAUTH2 в IMAP работает отлично, если я получаю токен доступа с игровой площадки OAuth 2.0. Однако мои попытки заставить программу получить токен доступа зашли в тупик. Я прочитал RFC и имею некоторое представление о том, что происходит, но все еще пытаюсь найти во всем этом практический смысл. Поэтому прошу помощи.

Код, с которым у меня не получается, выглядит следующим образом: он скопирован из примера здесь:

ClientSecrets clientSecrets = new ClientSecrets{ClientId = myClientID, ClientSecret = myClientSecret};

string[] scopes = new string[] { "https://mail.google.com" };

Google.Apis.Auth.OAuth2.UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                clientSecrets, scopes, "user", CancellationToken.None).Result;

Когда я запускаю это, я получаю сообщение об ошибке в своем браузере, говорящее:

Error: redirect_uri_mismatch

The redirect URI in the request: http://localhost:59904/authorize/ did not match a registered redirect URI

Я понимаю, что мне нужно установить URI перенаправления «urn: ietf: wg: oauth: 2.0: oob», но я не могу понять, как это сделать, и понять, почему образец не делает этого.

Большое спасибо за любую помощь...


person Hieronymous    schedule 23.01.2014    source источник


Ответы (1)


Похоже, вы используете секреты клиента веб-приложения, а НЕ секреты клиента установленного приложения.

Вы должны убедиться в облачной консоли, что используете установленное приложение. Тогда у вас не будет никаких проблем, потому что установленному приложению не нужно регистрировать какой-либо URI.

person peleyal    schedule 23.01.2014
comment
О да. Я задавался вопросом, почему в json, который я скачал, был веб, а не установленный. Я, должно быть, совершенно пропустил, где я должен был указать установленное приложение. Еще раз спасибо. - person Hieronymous; 25.01.2014