#c# #google-plus #google-api-dotnet-client
#c# #google-plus #google-api-dotnet-client
Вопрос:
Я пытаюсь использовать API входа в Google в ASP.NET используя этот код:
var flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = secrets,
Scopes = new string[] { PlusService.Scope.PlusLogin }
});
token = flow.ExchangeCodeForTokenAsync("me", code, "postmessage", CancellationToken.None).Resu<
var service = new Oauth2Service(new Google.Apis.Services.BaseClientService.Initializer());
var request = service.Tokeninfo();
request.AccessToken = token.AccessToken;
var info = request.Execute();
// info.Email is null here
Как указано Email
, поле at info
равно нулю. Если я добавлю что-нибудь еще к Scopes
«электронной почте» или «https://www.googleapis.com/auth/plus.profile.emails.read » (ссылка) Я получаю «invalid_scope»
Оставить это людям: получить API (ссылку) для получения электронных писем ничуть не лучше:
var credential = new UserCredential(flow, info.UserId, token);
plusService = new PlusService(new Google.Apis.Services.BaseClientService.Initializer()
{
ApplicationName = "Test",
HttpClientInitializer = credential
});
var me = plusService.People.Get("me").Execute();
// me.Emails is null
Чего мне здесь не хватает?
Ответ №1:
В массив областей вам нужно будет добавить PlusService.Scope.UserinfoEmail
, чтобы иметь возможность просматривать информацию, связанную с электронной почтой.
Scopes = new string[] { PlusService.Scope.PlusLogin, PlusService.Scope.UserinfoEmail }
Кроме того, вам нужно будет объявить дополнительную область в атрибуте «data-scope» вашей кнопки входа. В этом случае это было бы
data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email"
Надеюсь, это поможет.
РЕДАКТИРОВАТЬ.: Если вы используете https://github.com/googleplus/gplus-quickstart-csharp / в качестве отправной точки ваши данные должны выглядеть следующим образом: http://pastebin.com/VJzhzyyk
Комментарии:
1. нет, это не сработает, если я добавлю, как вы предлагаете, я получу Google.Apis.Auth. OAuth2.Ответы. Исключение TokenResponseException: Ошибка: «invalid_scope», Описание:»», Uri:»»
2. @Toolkit пожалуйста, проверьте, являются ли эти две области единственными, которые вы запросили как в части C #, так и в html
3. @ EvilBeer да, только две области. В тот момент, когда я добавляю вторую область в c #, у меня возникает ошибка invalid_scope. Я не могу найти ни одного рабочего примера c # с PlusService. Область применения. UserinfoEmail
4. @Toolkit не могли бы вы поделиться своей реализацией этого? (Ответ, который я опубликовал, — это то, что я успешно использую в своем приложении, поэтому проблема, скорее всего, где-то в другом месте)
5. Я основывался на официальном примере github.com/googleplus/gplus-quickstart-csharp В нем есть несколько ошибок, но я вижу идентификатор пользователя. Если я расширю его с помощью PlusService. Область применения. UserinfoEmail и измените область данных, как вы предлагаете, я получаю сообщение invalid_scope. Можете ли вы изменить его, чтобы получать электронную почту и публиковать здесь? Это было бы потрясающе. Но я могу сказать вам, что сам автор сказал мне переключиться на javascript-клиент, см. Комментарии здесь gusclass.com/blog/2014/07/29 /…