Python appengine的OAuth2身份验证已停止工作

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

我有一个定期工作,使用远程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 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时,我会看到一个错误页面,上面写着:

  • 那是个错误。 错误:无效的\u客户端 找不到OAuth客户端。 请求详细信息 访问类型=脱机 范围= 响应类型=代码 重定向_uri=urn:ietf:wg:oauth:2.0:oob 客户端id=无 我们只知道这些
  • 帮忙

    ----更新(2016-05-12)--


    我忘了提到我正在使用的身份验证文件。 要使
    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