2013-02-03 121 views
3

使用App Engine和服務帳戶訪問Google Drive可以正常工作。爲了使它工作,我還必須分享我的雲端硬盤文件與服務帳戶名稱:[email protected]如何在Google Drive和App Engine SDK中使用Oauth2服務帳戶

但是,當我使用GAE SDK時,我收到了401.我認爲原因是我的股票的SDK的service_account名稱。該SDK的服務帳戶名是:根據測試@本地:

app_identity.get_service_account_name() # returns [email protected] 

在SDK控制檯中的錯誤消息:

發生錯誤:https://www.googleapis.com/drive/ v2/files/0B9-mE .................... nM/children?alt = json & key = AI ............ ............ N0返回 「無效憑證」>

這是訪問谷歌驅動器代碼:

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   

UPDATE:

我個人的看法:這隻能與GAE而不是與SDK工作,因爲我不能讓一個驅動器共享與SDK service_account名。或者是否可以指定另一個服務帳戶名稱。

回答

2

請檢查文檔的Application-owned service accounts,也有video you can watch也。

該文檔包含Python示例代碼。

+0

您是否瞭解我的問題?它適用於GAE,但不適用於GAE SDK。我認爲它不可行,因爲有份額。 – voscausa

+0

對不起,我想我不明白。 GAE和GAE SDK有什麼區別?如果您指的是GAE服務帳戶,那麼這是不可能的,因爲Drive Apps必須與客戶端ID相關聯。 –

+0

SDK =在我的個人電腦和GAE開發我的意思是部署(在雲)的應用程序。因此,GAE可以正常工作,但由於test @ localhost服務帳戶名稱用於訪問驅動器盤,因此使用SDK無法在此方案中使用。 – voscausa

相關問題