在Google App Engine云端点内部调用Drive API

问题描述 投票:1回答:1

我正在尝试在App Engine应用程序内部构建自己的端点。 有一个终结点API需要向用户询问“ https://www.googleapis.com/auth/drive.readonly ”范围。 它执行Drive API的列表并扫描该用户的驱动器文件。

问题是我不知道如何在端点API内调用Drive api。

我认为在端点方法内部,它具有我们从用户那里获得的凭据。 但是我不知道该如何接受。

我正在使用python作为后端语言。

@drivetosp_test_api.api_class(resource_name='report')
class Report(remote.Service):
@endpoints.method(EmptyMessage, EmptyMessage,
    name='generate',
    path='report/generate',
    http_method='GET'
    ) 
def report_generate(self, request):
    logging.info(endpoints)
    return EmptyMessage()
python google-app-engine google-cloud-endpoints credentials google-drive-api
1个回答
1
投票

您可以使用os.environ访问HTTP授权标头,其中包括访问令牌,该令牌已被授予您在客户端要求的所有作用域, drive.readonly在示例中包含drive.readonly

if "HTTP_AUTHORIZATION" in os.environ:
  (tokentype, token)  = os.environ["HTTP_AUTHORIZATION"].split(" ")

然后,您可以直接或通过使用适用于PythonGoogle API客户端库,使用此令牌来调用API:

credentials = AccessTokenCredentials(token, 'my-user-agent/1.0')
http = httplib2.Http()
http = credentials.authorize(http)

service = build('drive', 'v2', http=http)

files = service.files().list().execute()

请注意,如果您使用的是Android客户端,则此方法将不起作用,因为它使用ID-Token授权而不是访问令牌。

© www.soinside.com 2019 - 2024. All rights reserved.