Что мне нужно изменить для Google+ API и отключения OAuth? - PullRequest
0 голосов
/ 09 февраля 2019

Я получил электронное письмо от Google с таким содержанием:

Hello Google+ Developer,

В приведенном ниже письме содержится информация о вашем последнем использовании API-интерфейсов Google+.Примечание. Он включает запросы области OAuth Google+, на которые также влияет отключение Google+.Предыдущее электронное письмо, отправленное активным абонентам API, не содержало информации о запросах OAuth.Последнее напоминание будет отправлено в феврале пользователям, у которых все еще активны запросы API или OAuth.

Что мне нужно знать?

7 марта 2019 года все API-интерфейсы Google+ иВход в Google+ будет полностью закрыт.Это будет постепенное завершение работы, при этом вызовы API начинают периодически прерываться уже 28 января 2019 года, а запросы OAuth для областей Google+ начинают периодически прерываться уже 15 февраля 2019 года.

Что мне нужноделать?

Пожалуйста, обновите перечисленные ниже проекты до 7 марта 2019 года и убедитесь, что они больше не используют API-интерфейсы Google+ или не запрашивают области действия OAuth Google+.Приведенные ниже данные показывают, какие методы Google+ API были недавно вызваны вашими проектами, а также области запросов OAuth Google+, которые он запросил.

Примечание. Если вы видите вызовы people.get, это может быть результатом использования Google+Функция входа в ваше приложение, которая полностью устарела и закрывается.Разработчики должны перейти от функции входа в Google+ к более полной системе аутентификации входа в Google.

| Project   | Google+ API Name  | Version | Method or OAuth ScopeA |   
|   A       | plus              | v1      | plus.people.get        |
|   B       | plus              | v1      | plus.people.get        |

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

Я запрашиваю две области, вот фрагмент для него:

const express = require('express');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;

const app = exprress();
auth(passport);
app.use(passport.initialize());
const auth = function (passport) = {
    passport.serializeUser((user, done) => {
        done(null, user);
    });
    passport.deserializeUser((user, done) => {
        done(null, user);
    });
    passport.use(new GoogleStrategy({
            clientID: CLIENT_ID,
            clientSecret: CLIENT_SECRET,
            callbackURL: CALLBACK_URL
        },
        (token, refreshToken, profile, done) => {
            return done(null, {
                profile: profile,
                token: token
            });
        }));
};
app.get('/auth/google', passport.authenticate('google', {
    scope: ['profile', 'email']
}));

Так что теперь я немного запутался, потому что я нет plus.people.get объем.И даже на этой странице документации они рекомендуют использовать profile и email.Так почему я получаю электронное письмо?

1 Ответ

0 голосов
/ 10 февраля 2019

Проблема не в том, что вы используете plus.profile scope , а в том, что библиотека использует конечную точку HTTP для plus.people.get для получения информации профиля.Даже если вы не используете область действия plus, три года назад рекомендуется использовать плюсовые конечные точки для получения информации профиля.

Существует запрос на получение , который изменяет конечную точкуэто используется.Мне не понятно, почему он не был объединен, но это должно произойти в ближайшее время.

Тем временем вы также можете указать конечную точку в свойстве userProfileURL для конфигурации при созданииGoogleStrategy объект.Таким образом, этот код может выглядеть примерно так:

passport.use(new GoogleStrategy({
        clientID: CLIENT_ID,
        clientSecret: CLIENT_SECRET,
        callbackURL: CALLBACK_URL,
        userProfileURL: 'https://www.googleapis.com/oauth2/v3/userinfo'
    },
    (token, refreshToken, profile, done) => {
        return done(null, {
            profile: profile,
            token: token
        });
    }));

Также существует другой модуль , который использует OpenID (который поддерживает Google) для получения информации профиля.Возможно, вы захотите переключиться на этот, так как он, кажется, поддерживается.

...