web-dev-qa-db-ja.com

403メッセージ:Legacy People APIはプロジェクトで使用されていません

Google APIはアクティブですがエラーが発生します。 Legacy People APIは、以前にプロジェクトで使用されていないか、無効になっています。 https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project= にアクセスして有効にしてから、再試行してください。このAPIを最近有効にした場合は、アクションがシステムに反映されるまで数分待ってから再試行してください。

13
Ömer ARGIN

この場合、私は同じ問題に直面しています。これは私がそれを修正するためにやったことです。

状況:

  • NodeJSバージョン8
  • "passport-google-oauth": "^ 1.0.0"
  • Google+ APIをGoogleログインとして使用する

アプリを実行して[Googleでサインイン]をクリックすると、どうなりますか?

どうすれば解決できますか?

  • Googleコンソールに移動
  • Social APIの下のGoogle+ APIをクリックし、次にEnable APIをクリックします。
  • G Suiteで[Google Drive API]をクリックし、[APIを有効にする]をクリックします
  • G Suiteで[Google Sheets API]をクリックし、[APIを有効にする]をクリックします
  • "passport-google-oauth": "^ 1.0.0"をpackage.jsonの "passport-google-oauth": "^ 2.0.0"に更新します
  • package-lock.jsonおよびnode_modulesフォルダーを削除します(すべてが明確であることを確認するため)
  • このコマンドを実行します:npm install
  • それは今働きます!

注:以前のコードでは、profile._json.image.urlを使用してプロフィール画像を取得しています。実際、この反応はもうありませんでした。そこで、このコードを削除します。さようならGoogle+ありがとうGoogle People API。

1
Bobby

Google Contacts APIとGoogle+ APIを有効にすると、この問題が修正されました。

0
Memuna

こんにちは私は最近同じ問題に悩まされました。 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()がリクエストを実行します。

0
avi.elkharrat