2013-05-13 108 views
2

我正在實施將從Google雲端硬盤文檔中提取內容的iOS應用。這份文件對於每個客戶都是一樣的,並且完全與用戶Google帳戶分開。 我遵循教程並觀看了關於如何使用SDK進行Xcode項目的視頻,我還在API控制檯上設置了Google驅動器應用程序並創建了其服務帳戶。我的問題在於,在客戶端幻燈片中,如何跳過用戶身份驗證步驟來阻止訪問他們自己的Google帳戶,並簡單地連接到應用服務帳戶。使用應用服務帳戶的iOS版Google Drive API

+0

我面臨同樣的問題。如果你找到解決方案,請幫我弄清楚.. http://stackoverflow.com/questions/23268608/google-drive-api-login-programmatically – Bulla 2014-04-25 09:29:51

回答

0

即使用戶正在訪問他們自己的數據,您的應用程序也獲得了訪問權限,以便爲用戶提供服務或功能。這使得Google有必要要求並獲得用戶對數據共享的同意。

+0

我們可以生成我們的谷歌帳戶的訪問令牌?無論如何都要在代碼中手動添加該令牌... https://developers.google.com/drive/web/service-accounts – Bulla 2014-04-25 09:28:23

2

在Java(Android)中可以使用帶服務帳戶的SDK,但不能使用iOS。我不知道爲什麼,我希望將來這會改變。

現在,以編程方式登錄到您的應用程序的Google帳戶將充當服務帳戶的唯一方法是hacky。您需要在應用程序上記錄一次,並保存從API中檢索的身份驗證令牌。然後,你可以重複使用它是這樣的:

_driveService = [[GTLServiceDrive alloc] init]; 

GTMOAuth2Authentication *auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName clientID:kClientID clientSecret:kClientSecret]; 
[auth setKeysForPersistenceResponseString:kDriveAPIToken]; 
_driveService.authorizer = auth; 

谷歌表示,該令牌不會改變,除非是同時達到有效令牌的最大數量,然後標記由FIFO(最老的有效憑證無效)清除。

+0

您能詳細闡述一下您的信息:在iOS中使用服務帳戶是不可能?我無法在Google上找到有關此問題的任何內容,但我無法在iOS SDK中找到與自己的服務帳戶有關的任何內容... – 2015-04-30 08:25:40

+0

對於java中的服務帳戶:https://developers.google.com/identity /協議/ OAuth2ServiceAccount。 iOS上沒有這樣的東西(至少我在1年前看過)。 – lukas 2015-04-30 12:58:38

+2

自從十月份發佈我的帖子以來,我改變了我的工作流程。我現在有一箇中間API,它將通過服務帳戶連接到Google API。我的Android和iOS應用將連接到我的API。這種方式更清潔可靠。 – lukas 2015-04-30 13:00:48

相關問題