c # - People API не возвращает адрес электронной почты - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь получить адрес электронной почты и имя вошедшего в систему пользователя. Я вижу имя пользователя, но адрес электронной почты показывает ноль. Вот код, который я написал, чтобы получить оба значения:

using Google.Apis.Auth.OAuth2;
using Google.Apis.People.v1;
using System.Net;
using System.Threading;
using Google.Apis.Services;
using Google.Apis.People.v1.Data;


UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
 new ClientSecrets
               {
                   ClientId = "jfms2vr52dm9eghchabasa5.apps.googleusercontent.com",
                   ClientSecret = "xxxxxxxxxxxx"
               },
               new[] { "profile", "https://www.googleapis.com/auth/contacts.readonly", "https://www.googleapis.com/auth/user.birthday.read", "https://www.googleapis.com/auth/userinfo.email" },
               "me",
               CancellationToken.None).Result;

        // Create the service.
        var service = new PeopleService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "M_Test1",
        });

        PeopleResource.GetRequest peopleRequest = service.People.Get("people/me");          
        peopleRequest.RequestMaskIncludeField = "person.names,person.emailAddresses,person.birthdays";
        Person profile = peopleRequest.Execute();

enter image description here

1 Ответ

0 голосов
/ 13 мая 2019

Похоже, вы изменили свои области. Чтобы увидеть адрес электронной почты, пользователь должен предоставить вам доступ к области действия электронной почты. Учетные данные для пользователя, который вошел в систему, хранятся в% appdata% под именем me , которое вы дали ему в приведенном ниже коде.

    UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
 new ClientSecrets
               {
                   ClientId = "jfms2vr52dm9eghchabasa5.apps.googleusercontent.com",
                   ClientSecret = "xxxxxxxxxxxx"
               },
               new[] { "profile", "https://www.googleapis.com/auth/contacts.readonly", "https://www.googleapis.com/auth/user.birthday.read", "https://www.googleapis.com/auth/userinfo.email" },
               "me",  // change this to reset login
               CancellationToken.None).Result;

Это просто строка, обозначающая пользователя. Вы можете изменить его на что-нибудь еще, и он предложит вам войти снова. Или вы можете просто удалить файл в% appdata%

...