在 Python Web 应用程序中,我可以使用 OAuth 和 IMAP 连接到 Gmail。 OAuth 只需使用您当前登录的任何 Google 帐户,并要求您授予对网络应用程序的访问权限。但是,它不提供 API 来实际检索该帐户的电子邮件地址。
问题是,即使用户通过 OAuth 授予访问权限,要与 Gmail 交互,您仍然需要在 IMAP 连接 URL 中显式提供电子邮件地址:
https://mail.google.com/mail/b/[your-email]/imap/
因此,Web 应用程序必须询问用户的电子邮件地址and要求他们通过 OAuth 授予 Gmail 访问权限。更糟糕的是,他们输入的电子邮件地址可能与他们授予访问权限的帐户的电子邮件不匹配,从而导致应用程序失败。
有没有办法使用 OAuth 获取您的电子邮件地址,以便您可以将其放入该 URL 中而无需询问用户?我试着看看这个答案但谷歌返回一个Bad Request
每当我同时使用两者时https://mail.google.com/
and https://www.googleapis.com/auth/userinfo#email
作为我的范围。
你所追求的是谷歌通讯录 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/"CEcMRX0_eCp7ImA9WhdRF00."">
<id>[email protected]</id>
...
<author>
<name>Joe Bloggs</name>
<email>joeb[email protected]</email>
</author>
...
</feed>
如您所见,您可以在几个地方找到授权用户的电子邮件。
如果您正在使用 OAuth,您可能还想看看 Google OAuth Playground,我发现它非常方便:http://googlecodesamples.com/oauth_playground/index.php。如果您决定使用 OAuth2,则可以使用等效工具:https://code.google.com/oauthplayground
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)