Недостаточно прав доступа с учетной записью службы Appengine Flex для доступа к папке "Диск"

Я написал приложение, которое использует все клиенты / SDK, как официально задокументировано.

credentials = GoogleCredentials \
    .get_application_default() \
    .create_scoped('https://www.googleapis.com/auth/drive')
drive = discovery.build(
    'drive',
    'v3',
    http=self.credentials.authorize(Http())
)
drive.files() \
    .get(fileId=file_id) \
    .execute()

Он отлично работает локально с учетной записью службы, созданной на панели, но при развертывании приложения возникает проблема с учетной записью службы в гибкой среде AppEngine.

17:15:04.000 /env/lib/python3.4/site-packages/oauth2client/contrib/gce.py:99: UserWarning: You have requested explicit scopes to be used with a GCE service account. 17:15:04.000 Using this argument will have no effect on the actual scopes for tokens 17:15:04.000 requested. These scopes are set at VM instance creation time and 17:15:04.000 can't be overridden in the request. 17:15:04.000 17:15:04.000 warnings.warn(_SCOPES_WARNING) 17:15:04.000 INFO:googleapiclient.discovery:URL being requested: GET https://www.googleapis.com/discovery/v1/apis/drive/v3/rest 17:15:04.000 INFO:oauth2client.client:Attempting refresh to obtain initial access_token 17:15:04.000 INFO:googleapiclient.discovery:URL being requested: GET https://www.googleapis.com/drive/v3/files/0B0Kn....M1pBNFE?alt=json 17:15:04.000 ERROR:root:Failed to retrieve file 0B0K....M1pBNFE. Is it shared with me? project-id@appspot.gserviceaccount.com 17:15:04.000 Traceback (most recent call last): 17:15:04.000 File "/home/vmagent/app/script.py", line 45, in get 17:15:04.000 .execute() 17:15:04.000 File "/env/lib/python3.4/site-packages/oauth2client/util.py", line 135, in positional_wrapper 17:15:04.000 return wrapped(*args, **kwargs) 17:15:04.000 File "/env/lib/python3.4/site-packages/googleapiclient/http.py", line 760, in execute 17:15:04.000 raise HttpError(resp, content, uri=self.uri) 17:15:04.000 googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/drive/v3/files/0B0Kn....M1pBNFE?alt=json returned "Insufficient Permission">

Я проверил разрешения, и они все установлены. Возможно, проблема связана с сообщением "Использование этого аргумента не будет иметь никакого эффекта...", которое появляется при попытке создать учетные данные.

1 ответ

Решение

Как вы упомянули в предыдущем комментарии, это известная проблема. Как описано в araf... @ google.com, кажется, что экземпляры App Engine в гибкой среде принимают учетные данные исходящей виртуальной машины GCE в качестве учетных данных приложения по умолчанию.

В качестве обходного пути вы можете использовать вручную созданную учетную запись службы, экспортированную в виде ключа JSON, хранящегося в вашем приложении, в соответствии с использованием OAuth 2.0 для приложений от сервера к серверу.

Для тех, кто затронут этой проблемой или для кого обходной путь неэффективен, пожалуйста, опубликуйте любую соответствующую информацию по указанной проблеме.

Другие вопросы по тегам