我使用Google App Engine遇到了一个相当奇怪的问题。在尝试使用GetAccessToken授权我的应用程序标识时,我不断收到错误:
ERROR 2018-03-08 18:14:42,472 api_server.py:364] Exception while handling app_identity_service.GetAccessToken()
Traceback (most recent call last):
File "/usr/lib64/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 332, in _handle_POST
api_response = _execute_request(request).Encode()
File "/usr/lib64/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 188, in _execute_request
make_request()
File "/usr/lib64/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 183, in make_request
request_id)
File "/usr/lib64/google-cloud-sdk/platform/google_appengine/google/appengine/api/apiproxy_stub.py", line 151, in MakeSyncCall
method(request, response)
File "/usr/lib64/google-cloud-sdk/platform/google_appengine/google/appengine/api/app_identity/app_identity_defaultcredentialsbased_stub.py", line 200, in _Dynamic_GetAccessToken
'expires': now + token.expires_in,
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
从我所看到的情况来看,Google正试图连接'now'这是一个整数,'token.expires_in'也应该是一个整数,而是作为'NoneType'对象返回。我出于特定原因在此项目中使用Python 2.7,并且完全了解Google Cloud SDK。任何帮助将不胜感激。
谢谢! -Josh Jackson
答案 0 :(得分:0)
我已经查看了Python中使用的get_access_token
方法的源代码(可以检查here),并且没有对名为expires_in
的方法返回的任何对象的引用。但是,正如您在代码中看到的,它返回expires_at
Python将expires_in
识别为NoneType,因为在令牌中没有任何对象被命名。每当您致电token.expires_in
时,请将其更改为token.expires_at
并再次测试。