使用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名。或者是否可以指定另一個服務帳戶名稱。
您是否瞭解我的問題?它適用於GAE,但不適用於GAE SDK。我認爲它不可行,因爲有份額。 – voscausa
對不起,我想我不明白。 GAE和GAE SDK有什麼區別?如果您指的是GAE服務帳戶,那麼這是不可能的,因爲Drive Apps必須與客戶端ID相關聯。 –
SDK =在我的個人電腦和GAE開發我的意思是部署(在雲)的應用程序。因此,GAE可以正常工作,但由於test @ localhost服務帳戶名稱用於訪問驅動器盤,因此使用SDK無法在此方案中使用。 – voscausa