簡體   English   中英

使用Oauth通過Gmail進行身份驗證后,是否可以獲取您的電子郵件地址?

[英]Is there a way to get your email address after authenticating with Gmail using Oauth?

在Python網絡應用程序中,我可以使用OAuth和IMAP連接到Gmail。 OAuth會簡單地使用您當前登錄的任何Google帳戶,並要求您授予對該Web應用程序的訪問權限。 但是,它沒有提供API來實際檢索該帳戶的電子郵件地址。

問題是,即使用戶授予OAuth訪問權限以與Gmail交互,您仍然需要在IMAP連接URL中明確提供電子郵件地址:

https://mail.google.com/mail/b/[your-email]/imap/

因此,Web應用程序必須向用戶詢問其電子郵件地址, 要求他們授予使用OAuth從Gmail訪問的權限。 更糟糕的是,他們輸入的電子郵件地址可能與他們授予訪問權限的帳戶的電子郵件地址不匹配,從而導致應用程序失敗。

有沒有一種方法可以使用OAuth獲取您的電子郵件地址,以便您可以將其放在該URL中而無需詢問用戶呢? 我嘗試查看此答案,但每當我同時使用https://mail.google.com/https://www.googleapis.com/auth/userinfo#email作為范圍時,Google都會返回Bad Request

您所追求的是Google Contacts API 如果您是通過OAuth授權的,那么您當前可能正在尋求訪問gmail范圍的權限:

https://mail.google.com/mail/feed/atom

您還需要請求聯系人范圍的許可:

https://www.google.com/m8/feeds/

有了它之后,就可以發出類似於以下內容的GET請求:

https://www.google.com/m8/feeds/contacts/default/full?max-results=1

這應該返回一堆xml,這是一些相關的位:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:gContact="http://schemas.google.com/contact/2008" xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CEcMRX0_eCp7ImA9WhdRF00.&quot;">
<id>joebloggs@gmail.com</id>
...
<author>
  <name>Joe Bloggs</name>
  <email>joebloggs@gmail.com</email>
</author>
...
</feed>

如您所見,您可以在幾個地方找到授權用戶的電子郵件。

如果您使用的是OAuth,則可能還想看看Google OAuth運動場,我發現它非常方便: http : //googlecodesamples.com/oauth_playground/index.php 如果您決定使用OAuth2, 訪問https://code.google.com/oauthplayground ,使用等效的工具

skorks的答案就可以了,但是您應該使用正確的API。 通過添加其他范圍

https://www.googleapis.com/auth/userinfo.email

您以“正確的方式”來做!

我用示例代碼寫了一篇完整的文章: http : //www.hackviking.com/2013/10/python-get-user-info-after-oauth/可在此處獲得的代碼: https : //code.google.com / p / google-api-oauth-demo /

暫無
暫無

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

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