Python Google云端点和服务帐户返回:Oauth框架用户没有';不匹配oauth令牌用户

Python Google云端点和服务帐户返回:Oauth框架用户没有';不匹配oauth令牌用户,python,google-app-engine,oauth,google-cloud-endpoints,endpoints-proto-datastore,Python,Google App Engine,Oauth,Google Cloud Endpoints,Endpoints Proto Datastore,我正在尝试使用类似于的服务帐户从cmdline访问google云端点 根据示例的指示,我创建了一个clientid+pk12证书,并使用它们通过oauth2client.client模块的SignedJwtAsertionCredential调用创建凭证 当我调用在本地devserver上运行的云端点时,工作正常,但是当我调用我得到的已部署gae云端点时 Oauth框架用户与Oauth令牌用户不匹配 oauth上似乎失败。从用户\u id\u令牌获取\u客户端\u id(作用域)调用。\u设置

我正在尝试使用类似于的服务帐户从cmdline访问google云端点

根据示例的指示,我创建了一个clientid+pk12证书,并使用它们通过oauth2client.client模块的SignedJwtAsertionCredential调用创建凭证

当我调用在本地devserver上运行的云端点时,工作正常,但是当我调用我得到的已部署gae云端点时

Oauth框架用户与Oauth令牌用户不匹配

oauth上似乎失败。从用户\u id\u令牌获取\u客户端\u id(作用域)调用。\u设置\u承载者\u用户\u变量()

当我在异常上添加了一个回溯时,它看起来是来自_maybe_raise_异常

E 2014-01-02 10:30:53.926提出不允许的错误(错误详情) E 2014-01-02 10:30:53.926不允许出现错误

有没有办法在不更改应用程序的身份验证类型的情况下解决此错误?由于域限制,似乎不允许请求

我的目标是在没有用户参与的情况下调用云端点,不确定使用SignedJwtAsertionCredential调用的路径是否正确,或者如果可能

其他信息

终结点的身份验证类型设置为“Google App Domain”

端点方法上所需的用户_为True

从SignedJwtAssertCredential生成的访问令牌与我使用

端点在api资源管理器中以及涉及身份验证流时按预期工作


使用endpoints_proto_数据存储库。

通过广泛的研究,我得出结论,实现OAuth并不是一种可行的应用程序身份验证方法,因为简单的事实是,它很难实现。在花了无数个小时在Stackoverflow上调试和询问关于一个简单的TwitterOAuth实现的问题之后,我收到了无数错误的答案(这让我可以安全地推断出大部分开发人员不知道如何使用oAuth),我决定不再使用oAuth

所以,我给你们留下伟大的法国皇帝拿破仑·波拿巴的话

“维多利亚蒂埃姆波”拿破仑·波拿巴

这基本上意味着在你前进的时候出去,不要把时间浪费在OAUTH上

其他信息

当我对OAUTH感到沮丧时,我最终做了一些研究,研究到底是谁提出了这个令人头痛的概念,结果发现创作者已经退出了这个项目,并在他的博客中公开谴责了OAUTH:

有趣的是,这条路被命名为地狱之路。因此,如果创建者没有使用OAUTH,那么您也绝对不应该使用OAUTH。我已经开始请愿,要求将OAUTH的使用定为非法,因此,如果你愿意,你可以加入这场斗争并给我们投票,它目前正在获得牵引力,我们感谢任何支持,所以请继续,给它投票

问题是由于为应用程序选择了“Google Apps”身份验证类型。此设置要求所有使用用户api的帐户都是example.com帐户,而服务帐户显然不是example.com帐户


一旦我们将身份验证类型更改为Google帐户,使用服务帐户和验证客户id就没有问题。

您的申请在哪里?我没有发现它?退出实际上并不是对问题的回答,以帮助可能最终出现在这里的任何其他人-我用两件事修复了相同的错误(对于我自己的自定义OAuth客户端):1。将应用程序引擎的Google身份验证设置更改为“Google帐户API”,而不是“Google应用程序域”,然后2。使用HTTP头“Authorization:Bearer”而不是“?access\u token=“query string”参数。