Google app engine 如何在Google Drive和App Engine SDK中使用Oauth2服务帐户

Google app engine 如何在Google Drive和App Engine SDK中使用Oauth2服务帐户,google-app-engine,sdk,oauth-2.0,google-drive-api,Google App Engine,Sdk,Oauth 2.0,Google Drive Api,使用应用程序引擎和服务帐户访问Google Drive效果良好。为了使其正常工作,我还必须与服务帐户名共享我的驱动器文件:appid@appspot.gserviceaccount.com. 但是当我使用GAE SDK时,我收到了401。我想原因是我的共享SDK的服务帐户名。SDK的服务帐户名为:test@localhost根据: app_identity.get_service_account_name() # returns test@localhost SDK控制台中的错误消息: 发生

使用应用程序引擎和服务帐户访问Google Drive效果良好。为了使其正常工作,我还必须与服务帐户名共享我的驱动器文件:appid@appspot.gserviceaccount.com.

但是当我使用GAE SDK时,我收到了401。我想原因是我的共享SDK的服务帐户名。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服务帐户名进行驱动器共享。或者可以指定另一个服务帐户名。

请查看文档,还有一个


这些文档包含Python示例代码。

您理解我的问题了吗?它适用于GAE,但不适用于GAE SDK。我不认为它可以工作,因为分享。对不起,我想我不明白。GAE和GAE SDK之间的区别是什么?如果你指的是GAE服务帐户,那是不可能的,因为驱动器应用程序必须与我的PC上的客户端ID.SDK=development相关联,我指的是已部署(在云中)的应用程序。因此,GAE可以正常工作,但是使用SDK,它无法在这种情况下工作,因为test@localhost服务帐户名,用于访问驱动器dile。现在是404。如果这个答案包含了所有必要的信息就更好了。