0

我正在用 PHP 构建一个 CRM webapp,它将从用户的所有电子邮件和社交媒体帐户中提取,并允许他们阅读和回复所有电子邮件,或撰写新电子邮件。现在,我只是想用 OAuth 1.0 让它与 Gmail 一起工作,但我遇到了一些麻烦。

我可以成功获取请求令牌和授权令牌,一旦用户授权我,谷歌就会像预期的那样重定向回我的应用程序......但现在我如何真正从用户的收件箱中提取消息? 此链接说我需要使用用户的电子邮件拨打电话以访问他们的收件箱,但我如何获取用户的电子邮件地址?我该如何处理 Google 退回给我的 oauth_verifier 和 oauth_token?

4

1 回答 1

0

我想到了。有两个步骤:

首先,在您实际访问任何用户信息之前,您必须将您的请求令牌升级为访问令牌。这是OAuth流程的第三步(谷歌页面上的用户授权是第二步);我对最后一步到底是什么感到困惑,并认为用户正在完成谷歌页面上的第二步和第三步。 Google 的 OAuth 游乐场帮助清除了这一点。无论如何,在 Google(或您的服务提供商是谁)将用户重定向回您的应用程序后,您使用 oauth_verifier 和 oauth_token 将请求令牌升级为访问令牌。不要忘记使用您的 oauth_token_secret(除了您的 consumer_secret_key)来为最后一个请求生成签名!这个小细节花了我很多时间!有关如何正确执行此操作的更多信息,请参阅此问题的答案。

现在,如果您像我一样,想让 Google 处理用户登录时使用的电子邮件地址(而不是自己在您的应用程序中收集该信息),您需要在访问用户的收件箱之前提出另一个请求。在我看来,这是 Google 文档真正失败的地方,因为您似乎需要用户的 google id(gmail 地址)才能使用他们的任何 API,但有可能完成 OAuth 过程而无需从用户那里获得它. 这就是导致我困惑的原因,也是我问题的重点。我仍然不是 100% 清楚你应该怎么做,但我现在所做的是将“ https://www.google.com/m8/feeds/ ”添加到我的范围,然后调用“ https://www.google.com/m8/feeds/contacts/default/full?max-results=0' 得到一个空的 xml 联系人列表,其中恰好包含用户的 gmail 地址。然后,您可以解析 XML 以获取用户的电子邮件并按照自己的方式进行操作。使用“ https://www.googleapis.com/auth/userinfo#email ”范围获取用户的电子邮件也是可能的(也许更可取),但我还没有尝试过。

于 2012-07-31T02:08:43.253 回答