Google应用程序引擎服务器到服务器OAuth Python

Google应用程序引擎服务器到服务器OAuth Python,python,google-app-engine,gmail,google-oauth,service-accounts,Python,Google App Engine,Gmail,Google Oauth,Service Accounts,我找不到使用Google SDK+Python+MAC OSx+GMAIL API授权服务器到服务器身份验证的解决方案 在GAE中发布我的应用程序之前,我希望在本地环境中测试GMail API集成,但直到现在,我还没有使用GMail API或OAuth API文档中找到的示例的结果。在所有测试中,当我的应用程序使用GCP服务帐户时,我收到了相同的错误403权限不足,但如果我将应用程序转换为使用用户帐户,则一切正常。服务帐户不是您自己的用户。即使你可以使用服务帐户访问Gmail,我怀疑你只会访问服

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


在GAE中发布我的应用程序之前,我希望在本地环境中测试GMail API集成,但直到现在,我还没有使用GMail API或OAuth API文档中找到的示例的结果。在所有测试中,当我的应用程序使用GCP服务帐户时,我收到了相同的错误403权限不足,但如果我将应用程序转换为使用用户帐户,则一切正常。

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

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

服务帐户可用于访问一些Google API,例如Google drive。服务帐户及其自己的谷歌驱动器帐户文件将上载到其驱动器帐户。我可以通过将它作为用户添加到google drive中的文件夹中,授予它上传到我的google drive帐户的权限


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

我建议您选择腿长的Oauth2.0。有关这方面的更多信息,请访问我的答案

相关术语三条腿OAuth指的是 您的应用程序代表最终用户调用Google API,并且 有时需要用户同意

我认为您必须使用三条腿的OAuth2.0,两条腿的OAuth2.0在您的情况下不起作用

请读下面这篇文章

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

因此,我们强烈鼓励您使用库,例如 谷歌API客户端库,将加密技术抽象出来 从您的应用程序代码


抱歉,我忘记了此重要信息,但应用程序正在使用OAuth 2.0抱歉,我忘记了此重要信息,但是应用程序正在使用OAuth 2.0您是使用两条腿的OAuth 2.0还是三条腿的OAuth 2.0?我尝试了以下两种方法:从oauth2client.appengine导入AppAssertionCredentials=AppAssertionCredentials'和另一种方法:从oauth2client.client导入SignedJwtAssertionCredentials client\u电子邮件=“我的服务-ACCOUNT@developer.gserviceaccount.com'将openMyProject.pem作为f:private_key=f.read credentials=SignedJwtAssertionCredentialsclient_电子邮件,private_key'时,您是否检查了范围?你检查过你的访问权限了吗?请继续讨论,我想,范围或访问权限存在一些问题。我以前遇到过类似的问题,请检查gam info domain命令至少需要对用户选项2r进行读取访问才能正常工作。我强烈建议您在熟悉GAM的同时开始选择所有范围。一旦掌握了基本知识,就可以将GAM限制到脚本所需的最低权限。当我的应用程序使用GCP服务帐户,但如果我将应用程序转换为使用用户帐户,则一切正常时,您的意思是什么。