403 Сообщение: Legacy People API не использовался в проекте


14

Google API активен, но выдает ошибку; Legacy People API ранее не использовался в проекте или отключен. Чтобы включить его, перейдите на страницу https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project= и повторите попытку. Если вы недавно включили этот API, подождите несколько минут, пока действие распространится на наши системы, и повторите попытку.


Запрос требует номер вашего аккаунта Google, в противном случае соединение не будет установлено.
jdweng

Я запустил ваш идентификатор с помощью следующей формы кода, и он сказал, что ключ недействителен: stackoverflow.com/questions/34597229/…
jdweng

Почему ? но идентификатор клиента верен
Ömer ARGIN

2
У меня точно такая же ошибка, она началась с прошлой недели. Вы нашли способ исправить это? Я чувствую, что что-то пошло не так на стороне Google с моей записью ClientId ... Может быть, они работали над чем-то, и мы получили "побочный эффект"?
Axel186

2
Кому-нибудь удалось найти решение этой ошибки? Я просто пытаюсь внедрить Google Sign-in, и ошибка по-прежнему возникает в январе 2020 года. Кто-нибудь?
реган

Ответы:


6

Вам не нужно устанавливать какие-либо другие API, такие как Google Drive API, Google Sheets API или другие, кроме Google+ API,

Ошибка возникает из-за "passport-google-oauth": "^ 1.0.0"

Просто измените версию «passport-google-oauth»: «^ 1.0.0» на «passport-google-oauth»: «^ 2.0.0», удалите файлы node_modules и package.lock.json и запустите «npm i»

это оно


ты жжешь! Спасибо! Я фактически использовал passport-google-oauth20@1.0.0, поэтому я удалил его и установил 2.0версию после прочтения вашего ответа, и это сработало.
Даниил

Спасибо, это работает, ты будешь чемпионом
Бхагват Ланде

2

Перед завершением работы API Google+ 7 марта 2019 года методы people.get и people.getOpenIdConnect были доступны для запроса профиля человека.

Чтобы избежать нарушения существующих интеграций с помощью этих методов, поддерживающих вход, новая минимальная реализация возвращает только базовые поля, необходимые для этой функции, такие как имя и адрес электронной почты, если они авторизованы пользователем. В Legacy People API эти методы останутся доступными для существующих абонентов на существующих конечных точках HTTP.

Legacy People API обслуживает ограниченную новую реализацию устаревших методов Google+ API people.get и people.getOpenIdConnect, необходимых для поддержания функциональности входа. Он доступен для существующих пользователей исходных методов, которые не были переведены на рекомендуемые замены, такие как Google Sign-in или Google People API, во время завершения работы API Google+.

введите описание ссылки здесь

Спасибо


1

В этом случае я столкнулся с той же проблемой. Это то, что я сделал, чтобы это исправить.

Ситуация:

  • NodeJS ver 8
  • "passport-google-oauth": "^ 1.0.0"
  • Использование Google+ API в качестве входа в Google

Когда я запускаю приложения и нажимаю Войти в Google, что случилось потом?

Как я это решаю?

  • Перейти к консоли Google
  • Нажмите на Google+ API под Social APIs, затем нажмите Enable API
  • Нажмите на Google Drive API в G Suite, затем нажмите Включить API
  • Нажмите на Google Sheets API в G Suite, затем нажмите Включить API
  • Обновите "passport-google-oauth": "^ 1.0.0" до "passport-google-oauth": "^ 2.0.0" в package.json
  • удалить папку package-lock.json и node_modules (чтобы все было понятно)
  • запустите эту команду: npm install
  • Это работает сейчас!

Примечание: мой предыдущий код все еще использует profile._json.image.url для получения изображения профиля. На самом деле, этого ответа больше не было. Поэтому я удаляю этот код. До свидания Google+ Спасибо Google People API.


Это дает мне ошибку:There was an error while loading /apis/api/legacypeople.googleapis.com/overview?project=xxxx. Please try again.
Джим Б.

ты следовал за шагами?
Бобби

0

Включение API контактов Google и API Google+ устранило эту проблему для меня.


Привет, это действие должно быть действительно к тому времени, когда ты это сделал. На данный момент (2020) Google+ API полностью выведен из эксплуатации для новых проектов.
avi.elkharrat

0

Привет, я недавно наткнулся на тот же вопрос. Как пояснил Илан Лалум, Google+ API полностью выведен из эксплуатации для новых проектов.

Я обнаружил, что Google People API работает аналогичным образом. Следующий пример основан на учебнике по книжной полке в GCP. Исходный код можно посмотреть здесь: https://github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf (филиал appengine/go111/cloudsql)

import people "google.golang.org/api/people/v1"

...

// retrieves the profile of the user associated with the provided OAuth token
func fetchProfile(ctx context.Context, tok *oauth2.Token) (*people.Person, error) {
peopleService, err := people.NewService(ctx, option.WithTokenSource(bookshelf.OAuthConfig.TokenSource(ctx, tok)))
if err != nil {
    return nil, err
}

return peopleService.People.Get("people/me").
    PersonFields("names,coverPhotos,emailAddresses").
    Do()
}

Для этого метода нужен контекст и токен OAuth, как и в случае с API Google+. peopleServiceИнициализируется аналогичным образом.

peopleService.People.Get("people/me")Готовит запрос , который извлекает профиль подключенного пользователя. Затем PersonFields("names,coverPhotos,emailAddresses")идет фильтр по полям профиля. Эта часть запроса является обязательной. В конце концов Do()выполнит запрос.


0

Эта проблема может быть исправлена ​​с помощью passport-google-token

npm install passport-google-token

const GoogleStrategy = require('passport-google-token').Strategy;

// Google OAuth Strategy
passport.use('googleToken', new GoogleStrategy({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET
}, async (accessToken, refreshToken, profile, done) => {
    try {
        console.log('creating a new user')
        const newUser = new User({
            google: {
                id: profile.id,
                email: profile.emails[0].value
            }
        });

        await newUser.save();
        done(null, newUser);
    } catch (error) {
        done(error, false, error.message);
    }
}));
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.