【发布时间】:2013-02-03 05:03:19
【问题描述】:
使用 App Engine 和服务帐户访问 Google Drive 可以正常工作。为了使它工作,我还必须使用服务帐户名称共享我的云端硬盘文件:appid@appspot.gserviceaccount.com。
但是当我使用 GAE SDK 时,我收到了 401。我认为原因是我的股份的 SDK 的 service_account 名称。 SDK 的服务帐号名称为:test@localhost 根据:
app_identity.get_service_account_name() # returns test@localhost
SDK 控制台中的错误信息:
发生错误:https://www.googleapis.com/drive/v2/files/0B9-mE........nM/children? alt=json&key=AI.......................N0 返回“无效凭据”>
这是访问 Google Drive 的代码:
def get(self):
SCOPE = 'https://www.googleapis.com/auth/drive'
credentials = AppAssertionCredentials(scope=SCOPE)
logging.info(app_identity.get_service_account_name())
http = credentials.authorize(httplib2.Http())
if os.environ['SERVER_SOFTWARE'].startswith('Development') :
service = build('drive', 'v2', http=http, developerKey='...API key...')
else :
service = build('drive', 'v2', http=http, developerKey='...APY key...')
# drive requests
更新:
我的个人意见:这只适用于 GAE 而不适用于 SDK,因为我无法使用 SDK service_account 名称进行 Drive 共享。或者是否可以指定另一个服务帐户名称。
【问题讨论】:
标签: google-app-engine sdk oauth-2.0 google-drive-api