Google OAuth APIでユーザーのメールアドレスを取得?
質問
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
エンドポイントは非推奨であり (明確化を参照)、次のような情報を提供する必要があります。
-
をリクエストすると
https://developers.google.com/identity/sign-in/web/devconsole-project
のスコープと -
をリクエストすると
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つだけでしょう。
関連
-
[解決済み] Gmailの送信者ヘッダーを使用した「このメッセージは、次のユーザーによって送信されていない可能性があります」の回避策
-
[解決済み] Faker pythonで姓と名を使ったメールアドレスを生成する
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み】mailtoの本文に改行を入れる。
-
[解決済み】膨大な数のメールがあるlinuxのメールボックスをパージするにはどうしたらいいですか?[クローズド]
-
[解決済み] return-path、reply-to、fromの動作の違いは何ですか?
-
[解決済み] メールのmultipart/alternativeとmultipart/mixedの比較
-
[解決済み] Sender、From、Return-Pathの違いは何ですか?
-
[解決済み] サービスとしてメールを送信する場合、Reply-Toヘッダを使用した方が良いですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] バニラフォーラムでメールテンプレートをテーマ化する方法は?
-
[解決済み] Gmailの送信者ヘッダーを使用した「このメッセージは、次のユーザーによって送信されていない可能性があります」の回避策
-
[解決済み] 暗号化されたS/MIMEメッセージを復号化せずに、署名もされているか確認する方法
-
[解決済み] Faker pythonで姓と名を使ったメールアドレスを生成する
-
[解決済み] [Solved] プログラムで送信したメールが自動的にスパムとしてマークされないようにするにはどうしたらいいですか?
-
[解決済み】ポート465とポート587の違いは何ですか?
-
[解決済み】メールの件名の長さの制限について教えてください。
-
[解決済み] return-path、reply-to、fromの動作の違いは何ですか?
-
[解決済み] メールマガジンにGoogleプラス(1つまたは共有)のリンクを追加する
-
[解決済み] HTMLメールでbase64画像を送信する