Python appengine的OAuth2身份验证已停止工作
我有一个定期工作,使用远程api从appengine数据存储中提取数据。 这项工作突然停止了,因为谷歌决定不再喜欢我的服务器。 不过,它在我的机器上工作 下面是在我的机器上的python shell中发生的情况:Python appengine的OAuth2身份验证已停止工作,python,google-app-engine,oauth-2.0,Python,Google App Engine,Oauth 2.0,我有一个定期工作,使用远程api从appengine数据存储中提取数据。 这项工作突然停止了,因为谷歌决定不再喜欢我的服务器。 不过,它在我的机器上工作 下面是在我的机器上的python shell中发生的情况: $ python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more informa
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from google.appengine.ext.remote_api import remote_api_stub
>>> app = 'qmagicobr2.appspot.com'
>>> remote_api_stub.ConfigureRemoteApiForOAuth(app, '/_ah/remote_api')
<google.appengine.tools.appengine_rpc_httplib2.HttpRpcServerOAuth2 object at 0x7f5cdfac61d0>
>>>
当我转到上面的URL时,我会看到一个错误页面,上面写着:
我忘了提到我正在使用的身份验证文件。 要使
ConfigureRemoteApiForOAuth
正常工作,我需要一个指向凭证文件的环境变量GOOGLE\u APPLICATION\u CREDENTIALS
。
我愿意。
在两种环境(我的机器和服务器)中,GOOGLE\u应用程序\u凭据
指向json文件(两种环境中的文件相同),格式如下:
{
"type": "service_account",
"project_id": "qmagicobr2",
"private_key_id": "000000000000000000000000000000000000000",
"private_key": "-----BEGIN PRIVATE KEY-----\nAAAAAAAAAAAAAAAAAAAAAAA....AAAA\n-----END PRIVATE KEY-----\n",
"client_email": "dashboard@qmagicobr2.iam.gserviceaccount.com",
"client_id": "0000000000000000000000",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dashboard%40qmagicobr2.iam.gserviceaccount.com"
}
这个文件是使用Appengine的开发者控制台在“凭据/服务帐户密钥/管理服务帐户”下生成的,所以我刚刚测试了这个特定的用例,并且客户端id为none这一事实揭示了很多问题
ConfigureRemoteApiForOAuth
接受使用带有密钥文件的服务帐户,提供oauth2参数作为appengine\u rpc\u httplib2.HttpRpcServerOAuth2.OAuth2Parameters
对象,您可以在其中指定客户端id
,secret
,范围
等
但缓解这种情况的最简单方法是使用正确验证服务器:
gcloud auth login
我忘了提到我正在使用的身份验证文件,我正在更新问题。我添加了有关身份验证文件的更多信息,你能看看我的更新吗?哦,谢谢你的回答!我在服务器上安装了gcloud,并完成了身份验证过程(将链接粘贴到浏览器上,并将代码粘贴回终端)。成功了。我注意到它创建了
~/.config/gcloud/application\u default\u credentials.json
。我将我的GOOGLE\u应用程序\u凭证
指向该文件,它成功了!
gcloud auth login