【问题标题】:Getting 'Refreshing due to a 401' when trying to connect using remote_api尝试使用 remote_api 连接时出现“由于 401 导致刷新”
【发布时间】:2016-10-01 23:41:47
【问题描述】:

我正在尝试连接到基于 https://cloud.google.com/appengine/docs/python/tools/remoteapi#enabling_remote_api_access_in_your_appAppEngine - Remote API returning 401 and too-many-authGAE: remote_api and Application Default Credentials 等在 Google App Engine 上运行的生产数据存储。

这是我连接到 Google App Engine Datastore 的代码

try:
    import dev_appserver
    dev_appserver.fix_sys_path()
except ImportError:
    print('Please make sure the App Engine SDK is in your PYTHONPATH.')
    raise

from google.appengine.ext.remote_api import remote_api_stub
import os

class RemoteApi:
    @staticmethod
    def use_remote_datastore():
        os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "my-appengine-default-service-account.json"
        project_id = 'myapp'
        project_address = '{}.appspot.com'.format(project_id)
        RemoteApi.connect2(project_address)

    @staticmethod
    def auth_func2():
        return ('myuser@myemail.com','mypassword')

    @staticmethod
    def connect2(project_address):
            remote_api_stub.ConfigureRemoteApiForOAuth(
            project_address,
            '/_ah/remote_api', secure=True)

但我得到了错误

NotSupportedOnThisPlatform

如果我再设置

secure=False

然后我得到

 INFO     2016-10-01 23:35:32,727 client.py:546] Attempting refresh to obtain initial access_token
....
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/dummy_thread.py", line 73, in allocate_lock
return LockType()
RuntimeError: maximum recursion depth exceeded

我试过跑步

gcloud auth login

并创建一个新的服务帐户,这里都建议AppEngine - Remote API returning 401 and too-many-auth

任何想法我做错了什么?

【问题讨论】:

    标签: python google-app-engine google-oauth


    【解决方案1】:

    您提到了auth_func2但没有使用它,根据每次使用oauth请求时没有此信息的remote_api更新,连接是不可能的。

    更改您的 connect2 方法并尝试一下 -

    @staticmethod
    def connect2(project_address):
        remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func2, project_address)
    

    P.S - 我假设您的 project_address 是正确的并且没有“http://”

    【讨论】:

      猜你喜欢
      • 2017-03-14
      • 2011-11-07
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2011-05-08
      相关资源
      最近更新 更多