簡體   English   中英

是否可以獲取使用OAuth2訪問其帳戶的用戶的電子郵件地址

[英]Is it possible to get an email address of user whose account is being accessed using OAuth2

我使用OAuth2身份驗證來使用IMAP來訪問用戶發送到Gmail(和Hotmail)的郵件。 為此,我執行了以下步驟:

  1. 提示用戶電子郵件地址。
  2. 生成授權URL,然后在嵌入式瀏覽器中將其打開。
  3. Gmail要求用戶提供電子郵件地址和密碼,以及我的應用程序所需的權利。
  4. 獲取訪問令牌和刷新令牌。
  5. 使用在步驟1中獲得的電子郵件地址和在步驟4中獲得的訪問令牌來形成承載令牌。
  6. 然后,我使用AUTHENTICATE XOAUTH2%bearer_token%來訪問用戶的郵件。

這很好。 但是我不喜歡用戶必須兩次輸入電子郵件地址-1和3步驟。 實際上,用戶可以在步驟1和3上輸入不同的電子郵件地址,因此我在步驟6上收到“無效的憑據”。

因此,問題是:是否可以獲取正在訪問其帳戶的用戶的電子郵件地址? 然后,我可以跳過步驟1。

使用Google Identity Plateform,您可以通過在授權請求中添加“ openid”和“ email”范圍來對用戶進行身份驗證(請參閱本頁 )。 當您收到訪問令牌時,您還將收到一個包含用戶電子郵件的ID令牌。

使用這些作用域,您可以擺脫步驟1,並在步驟4“獲取訪問令牌, ID令牌和刷新令牌”中檢索電子郵件。 驗證ID令牌的詳細信息在此頁面上

正如@Spomky所寫,對於Google,我們可以使用附加范圍“電子郵件”來獲取ID令牌並從中提取電子郵件地址。

對於Hotmail(Live.com),我們可以在第4步之后提出其他請求:GET https://apis.live.net/v5.0/me?access_token=ACCESS_TOKEN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM