来自android的云端点身份验证:Oauth框架用户与oauth令牌用户不匹配

时间:2013-06-30 01:05:32

标签: android google-app-engine oauth-2.0 google-cloud-endpoints

我正在尝试使用身份验证从我的Android客户端访问我使用python中的云端点构建的appengine后端。

身份验证在api资源管理器中运行良好。

在android方面,我使用的是凭据/帐号选择器方法:https://developers.google.com/appengine/docs/python/endpoints/consume_android

但是当从Android客户端访问时,我在appengine日志中得到以下内容:

“Oauth框架用户与oauth令牌用户不匹配。”

在此之前就有这个警告:

“id_token验证失败:无法加载pycrypto库。无法验证id_token签名。有关”

的更多信息,请参阅http://www.pycrypto.org

1 个答案:

答案 0 :(得分:4)

当您从Android客户端访问具有云端点的GAE应用程序时,它将使用ID令牌。因此,如果您收到警告Oauth framework user didn't match oauth token user,那么您必须在id_token验证中看到一些失败并看到一些警告,例如id_token verification failed. Checking for oauth token.请检查您的endpoints.get_current_user()方法是否在此情况下返回无然后检查身份验证部分中的任何错误。

这篇文章详细解释了ID tokens,这篇文章解释了limitations in knowing User_id when using ID tokens and the possible workarounds

编辑::根据Kai Stavginski的建议在下面找到最终解决方案

正如所建议的,当id_token验证中存在一些错误时,会看到oauth框架警告。因此,根据修改后的问题,日志有id_token verification failed: Unable to load pycrypto library这需要将pycrypto库添加到app.yaml,然后将解决id_token失败,并且不会出现与oauth相关的警告。