【问题标题】:Google App Engine Server to Server OAuth PythonGoogle App Engine 服务器到服务器 OAuth Python
【发布时间】:2015-09-11 13:04:33
【问题描述】:

我找不到使用 Google SDK + Python + MAC OSx + GMAIL API 授权服务器到服务器身份验证的解决方案。

我想在我的本地环境中测试 GMail API 集成,然后在 GAE 中发布我的应用程序,但到目前为止,我使用在 GMail API 或 OAuth API 文档中找到的示例没有结果。在所有测试期间,当我的应用程序使用 GCP 服务帐户时,我收到了相同的错误“403-Insufficient Permission”,但如果我将应用程序转换为使用用户帐户,一切都很好。

【问题讨论】:

  • 当我的应用程序使用 GCP 服务帐户时,您所说的“是什么意思,但如果我将应用程序转换为使用用户帐户,一切都很好。”

标签: python google-app-engine gmail google-oauth service-accounts


【解决方案1】:

服务帐户不是您自己的用户。即使您可以使用服务帐户访问 Gmail,但我怀疑您只会访问服务帐户 GMail 帐户(我认为它没有)而不是您自己的帐户。

据我所知,访问 Gmail API 的唯一方法是使用 Oauth2。

服务帐户可用于访问某些 Google API,例如 Google Drive。该服务帐户将其自己的 Google 驱动器帐户文件上传到其驱动器帐户。我可以通过将其添加为 Google 云端硬盘文件夹中的用户来授予它上传到我的 Google 云端硬盘帐户的权限。

您不能授予其他用户读取您的 Gmail 帐户的权限,因此再次访问 Gmail API 的唯一方法是使用 Oauth2。

【讨论】:

  • 抱歉,我忘记了这个重要信息,但应用程序使用的是 OAuth 2.0
【解决方案2】:

我建议你选择三足类OAUTH 2.0。有关这方面的更多信息,请访问我的答案here

相关术语“三足 OAuth”指的是 您的应用程序代表最终用户调用 Google API,并在 有时需要哪些用户同意。

我认为您必须使用三足 OAUTH 2.0,两足 OAUTH 2.0 不适用于您的情况

请从developers.google.com阅读本文

建议:您的应用程序可以通过以下方式完成这些任务 使用适用于您的语言的 Google API 客户端库,或直接通过 使用 HTTP 与 OAuth 2.0 系统交互。然而 服务器到服务器身份验证交互的机制需要 用于创建和加密签名 JSON Web 令牌的应用程序 (JWT),并且很容易犯严重的错误,可能会产生严重的 影响您的应用程序的安全性。

因此,我们强烈建议您使用库,例如 Google API 客户端库,将密码学抽象出来 来自您的应用程序代码。

【讨论】:

  • 抱歉,我忘记了这个重要信息,但应用程序使用的是 OAuth 2.0
  • 您使用的是两足 OAUTH 2.0 还是三足 OAUTH 2.0?
  • 我尝试了这两种方法:“from oauth2client.appengine import AppAssertionCredentials credentials = AppAssertionCredentials('mail.google.com/')”和另一个:“from oauth2client.client import SignedJwtAssertionCredentials client_email = 'MY-SERVICE- ACCOUNT@developer.gserviceaccount.com' with open("MyProject.pem") as f: private_key = f.read() credentials = SignedJwtAssertionCredentials(client_email, private_key, 'mail.google.com/') "
  • 你检查过你的范围了吗?你检查你的访问权限了吗?请通过这个讨论,我猜,范围或访问权限有问题。我之前遇到过类似的问题,请检查here““gam info domain”命令至少需要对用户的读取权限(选项 2r)才能正常工作。我强烈建议您在熟悉的同时选择所有范围GAM。一旦掌握了基础知识,您就可以将 GAM 限制为脚本所需的最低权限。"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多