403 Wiadomość: Interfejs API Legacy People nie został użyty w projekcie

14

Interfejs API Google jest aktywny, ale podaje błąd; Interfejs API Legacy People nie był wcześniej używany w projekcie lub jest wyłączony. Włącz to, odwiedzając https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=, a następnie spróbuj ponownie. Jeśli niedawno włączyłeś ten interfejs API, odczekaj kilka minut, aż działanie zostanie przeniesione do naszych systemów i spróbuj ponownie.

Ömer ARGIN
źródło
Żądanie wymaga numeru konta Google, w przeciwnym razie połączenie nie powiedzie się.
jdweng
Uruchomiłem twój identyfikator z następującym formularzem kodu, który mówi, że klucz jest niepoprawny: stackoverflow.com/questions/34597229/...
jdweng 31.10.19
dlaczego ? ale identyfikator klienta jest prawdziwy
Ömer ARGIN
2
Mam dokładnie ten sam błąd, zaczął się od zeszłego tygodnia. Czy znalazłeś sposób, aby to naprawić? Wydaje mi się, że coś poszło nie tak po stronie Google z moim rekordem ClientId ... Może coś nad tym pracowało i otrzymaliśmy „efekt uboczny”?
Axel186,
2
Czy ktoś zdołał znaleźć rozwiązanie tego błędu? Po prostu próbuję wdrożyć Google Sign-in, a błąd nadal występuje styczeń 2012. Ktoś?
regan

Odpowiedzi:

6

Nie musisz instalować żadnych innych interfejsów API, takich jak interfejs API Dysku Google, interfejs API Arkuszy Google lub inne oprócz interfejsu API Google+,

Błąd nadchodzi z powodu „passport-google-oauth”: „^ 1.0.0”

Wystarczy zmienić wersję „passport-google-oauth”: „^ 1.0.0” na „passport-google-oauth”: „^ 2.0.0” i usunąć plik node_modules i package.lock.json, a następnie uruchomić „npm i”

Otóż ​​to

Mohd Sahil
źródło
rządzisz! Dziękuję Ci! Właściwie korzystałem [email protected], więc usunąłem go i zainstalowałem 2.0wersję po przeczytaniu twojej odpowiedzi i zadziałało.
Daniel
Dzięki człowieku, działa,
jesteś
2

Przed zamknięciem interfejsu API Google+ 7 marca 2019 r. Dostępne były metody people.get i people.getOpenIdConnect umożliwiające żądanie profilu osoby.

Aby uniknąć zerwania istniejących integracji z tymi metodami obsługującymi logowanie, nowa minimalna implementacja zwraca tylko podstawowe pola niezbędne do tej funkcji, takie jak imię i nazwisko oraz adres e-mail, o ile użytkownik wyrazi na to zgodę. Interfejs API Legacy People umożliwia dostęp do tych metod dla istniejących rozmówców w istniejących punktach końcowych HTTP.

Interfejs API Legacy People obsługuje nową, ograniczoną implementację starszych interfejsów API Google+ people.get i people.getOpenIdConnect niezbędnych do utrzymania funkcjonalności logowania. Jest on dostępny dla istniejących osób dzwoniących według oryginalnych metod, które nie zostały migrowane do zalecanych zamienników, takich jak Google Sign-in lub Google People API w momencie zamknięcia interfejsu API Google+.

wprowadź opis linku tutaj

Dzięki

Ilan Laloum
źródło
1

W tym przypadku mam ten sam problem. Właśnie to zrobiłem, aby to naprawić.

Sytuacja:

  • NodeJS wersja 8
  • „passport-google-oauth”: „^ 1.0.0”
  • Używanie interfejsu API Google+ jako logowania Google

Kiedy uruchomię aplikacje i kliknę Zaloguj się za pomocą Google, co się wtedy stało?

Jak to rozwiązać?

  • Przejdź do konsoli Google
  • Kliknij Google+ API w Social API, a następnie Włącz API
  • Kliknij Interfejs API Dysku Google w G Suite, a następnie Włącz interfejs API
  • Kliknij interfejs API Arkuszy Google w G Suite, a następnie Włącz interfejs API
  • Zaktualizuj „passport-google-oauth”: „^ 1.0.0” na „passport-google-oauth”: „^ 2.0.0” w pliku package.json
  • usuń folder package-lock.json i node_modules (aby upewnić się, że wszystko jest czyste)
  • uruchom to polecenie: npm install
  • Teraz działa!

Uwaga: mój poprzedni kod nadal używa profile._json.image.url, aby uzyskać obraz profilu. W rzeczywistości tej odpowiedzi już nie było. Więc usuwam ten kod. Do widzenia Google+ Dziękujemy Google People API.

Konstabl
źródło
Daje mi to błąd:There was an error while loading /apis/api/legacypeople.googleapis.com/overview?project=xxxx. Please try again.
Jim.B
czy postępowałeś zgodnie ze wskazówkami?
Bobby
0

Włączenie interfejsu API Kontaktów Google i interfejsu API Google+ rozwiązało dla mnie ten problem.

Memuna
źródło
Cześć, ta czynność musiała być ważna do momentu jej wykonania. Na dzień dzisiejszy (2020) interfejs API Google+ został całkowicie wycofany z eksploatacji w przypadku nowych projektów.
avi.elkharrat
0

Cześć Ostatnio natknąłem się na ten sam problem. Jak wyjaśnił Ilan Laloum, interfejs API Google+ został całkowicie wycofany z użytku w przypadku nowych projektów.

Odkryłem, że Google People API działa w podobny sposób. Poniższy przykład oparty jest na samouczku dotyczącym półki na książki w GCP. Kod źródłowy można zobaczyć tutaj: https://github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf (oddział 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()
}

Ta metoda wymaga kontekstu i tokenu OAuth, podobnie jak kiedyś interfejs API Google+. ThepeopleServiceJest inicjowany w podobny sposób.

peopleService.People.Get("people/me")Przygotowuje kwerendy, która pobiera profil podłączonego użytkownika. Następnie PersonFields("names,coverPhotos,emailAddresses")jest filtr na polach profilu. Ta część wniosku jest obowiązkowa. W końcu Do()wykona żądanie.

avi.elkharrat
źródło
0

Ten problem można rozwiązać za pomocą 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);
    }
}));
Suresh Mangs
źródło