Ошибка # Неправильный путь requestMask.includeFields при выполнении People API - PullRequest
0 голосов
/ 27 марта 2019

В vs2017 я создаю веб-приложение для включения аутентификации Google.У меня есть страница Login.aspx, где при нажатии кнопки вызывается следующий код:

    function onSignIn(googleUser) {
        var profile = googleUser.getBasicProfile();
        console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
         // The ID token you need to pass to your backend:
        var id_token = googleUser.getAuthResponse().id_token;
        console.log("ID Token: " + id_token);
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'http://localhost:53028/1.aspx');
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');            
        xhr.send('idtoken=' + id_token);
    } 

Это показывает мне экран входа в Google, и я могу войти в систему.

Код 1.Страница aspx.cs:

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 = "1ghchabasa5.apps.googleusercontent.com",
                   ClientSecret = "AG0LvA1wZA11D"
               },
               new[] { "profile", "https://www.googleapis.com/auth/contacts.readonly" },
               "me",
               CancellationToken.None).Result;

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

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

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

Полученная ошибка:

Google.GoogleApiException: 'Google.Apis.Requests.RequestError

Неверный путь requestMask.includeFields: "person.email_addresses".[400]

Ошибки [

Сообщение [Неверный путь requestMask.includeFields: "person.email_addresses".] Местоположение [-] Причина [badRequest] Домен [глобальный]

1 Ответ

0 голосов
/ 27 марта 2019

Подсказка: поле через запятую удалите пробел.

Чтобы получить день рождения, вы должны использовать дни рождения

peopleRequest.RequestMaskIncludeField = "person.emailAddresses,person.birthdays";

Если данные, которые вы ищете, отсутствуют, убедитесь, что у вас естьпользователь заполняет Личная информация

Области применения

Убедитесь, что в код добавлены правильные области действия

Пример

new[] { "profile", "https://www.googleapis.com/auth/contacts.readonly", "https://www.googleapis.com/auth/user.birthday.read", "https://www.googleapis.com/auth/userinfo.email" },

проверить это

Если вы запуститеВ следующей форме вы увидите, существуют ли данные Проверьте меня Когда я его запусту, я увижу мой день рождения и адрес электронной почты.

...