1. ホーム
  2. email

Google OAuth APIでユーザーのメールアドレスを取得?

2023-09-15 04:17:09

質問

Google の OAuth 2.0 プレイグラウンドで私個人の Google アカウントを使って遊んでいるのですが、プレイグラウンドを使用して Gmail アドレスを回復できないようです。

私が使っているスコープは

email profile https://www.googleapis.com/auth/plus.login

しかし、APIを呼び出すと

https://www.googleapis.com/oauth2/v2/userinfo

姓、名、性別、写真など、ユーザーに関する様々な情報を得ることができますが、ユーザーの電子メールを返すことはできません。

どうすればユーザーのメールアドレスを取得できるのでしょうか。スコープが間違っているのか、間違った API を呼び出しているのでしょうか。これは非常に単純なことのように感じますが、文字通り何時間もこれを理解しようとしてきましたが、一貫してユーザーの電子メール アドレスを提供する API とスコープの組み合わせを見つけることができません。

どのように解決するのですか?

更新日:2018年12月

12月20日、GoogleはGoogle+ APIを2019年3月に停止し、2019年1月末から断続的に障害を発生させると発表しました。その一環として plus.people.get エンドポイントは非推奨で、終了する予定です。 .

userinfo エンドポイントは非推奨であり (明確化を参照)、次のような情報を提供する必要があります。

  1. をリクエストすると https://developers.google.com/identity/sign-in/web/devconsole-project のスコープと
  2. をリクエストすると email フィールドを要求しています。

明確化:2019年1月24日

グーグル 文書化 によると、userinfo (v2) エンドポイントは廃止されましたが、後に "deprecated, but kept available for backwards compatibility" に変更されたとのことです。

現在のドキュメント では、現在サポートされている openid メソッドによるプロファイルと電子メールの情報の取得について説明しています。これには、その ディスカバリードキュメント で指定されたエンドポイントを使用することも含まれます。

現時点では、そのURLは https://openidconnect.googleapis.com/v1/userinfo ですが、これは過去に変更されたことがあり、ディスカバリードキュメントは https://accounts.google.com/.well-known/openid-configuration のディスカバリードキュメントが、使用する URL の権威あるソースとなります。

だから、はっきり言って

  • 古い userinfo の URL は後方互換性のために維持されます。
  • 新しい userinfo URL はディスカバリードキュメントで利用可能です。

にかかわらず、プラスバージョンの何か(後述)は 非推奨で削除される予定 .

オリジナルの回答

あなたがやっていることと、あなたがやろうとしていることに、多くの問題があります。

まず第一に https://www.googleapis.com/oauth2/v2/userinfo エンドポイントは非推奨であり、2014 年 9 月に削除される予定です。動作に一貫性がないため、使用しないでください。

abraham が指摘するように、あなたは people.get のエンドポイントを https://www.googleapis.com/plus/v1/people/me . これで メール フィールドに、アドレスの配列が格納されます。あなたの場合、quot;account" のタイプを持っているのは1つだけでしょう。