Google APIはアクティブですが、エラーが発生します。Legacy People APIは、以前にプロジェクトで使用されていないか、無効になっています。https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=にアクセスして有効にしてから、再試行してください。このAPIを最近有効にした場合は、アクションがシステムに反映されるまで数分待ってから再試行してください。
Google APIはアクティブですが、エラーが発生します。Legacy People APIは、以前にプロジェクトで使用されていないか、無効になっています。https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=にアクセスして有効にしてから、再試行してください。このAPIを最近有効にした場合は、アクションがシステムに反映されるまで数分待ってから再試行してください。
回答:
Google Drive API、Google Sheets APIなど、Google + API以外の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
あなたの答えを読んだ後でそれを削除してバージョンをインストールしましたが、うまくいきました。
2019年3月7日のGoogle+ APIシャットダウンの前は、people.getおよびpeople.getOpenIdConnectメソッドを使用して、個人のプロファイルをリクエストできました。
サインインをサポートするこれらのメソッドとの既存の統合を壊さないようにするために、新しい最小限の実装では、ユーザーによって承認された場合、名前や電子メールアドレスなど、その機能に必要な基本フィールドのみが返されます。Legacy People APIは、既存のHTTPエンドポイントで既存の呼び出し元がこれらのメソッドを引き続き使用できる場所です。
Legacy People APIは、サインイン機能を維持するために必要な従来のGoogle+ APIのpeople.getメソッドとpeople.getOpenIdConnectメソッドの制限された新しい実装を提供します。Google+ APIのシャットダウン時に、GoogleログインやGoogle People APIなどの推奨される代替に移行していない元のメソッドの既存の呼び出し元が利用できます。
ありがとう
この場合、私は同じ問題に直面しています。これは私がそれを修正するためにやったことです。
状況:
アプリを実行して[Googleでサインイン]をクリックすると、どうなりますか?
どうすれば解決できますか?
注:以前のコードでは、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.
Google Contacts APIとGoogle+ APIを有効にすると、この問題が解決しました。
こんにちは私は最近同じ問題に悩まされました。Ilan Laloumが説明したように、Google + APIは新しいプロジェクトで完全に廃止されました。
Google People APIも同様に機能することがわかりました。次の例は、GCPのBookshelfチュートリアルに基づいています。ソースコードはここにあります:https : //github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf(branch 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()
}
このメソッドには、Google + APIと同じように、コンテキストとOAuthトークンが必要です。peopleService
同様の方法で初期化されます。
peopleService.People.Get("people/me")
接続されたユーザーのプロファイルをフェッチする問合せを準備します。次にPersonFields("names,coverPhotos,emailAddresses")
、プロファイルフィールドのフィルタです。リクエストのこの部分は必須です。最終的Do()
にはリクエストを実行します。
この問題は、 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);
}
}));