2016-03-27 104 views
1

我的谷歌後端的API使用Oauth 2.0,當我打電話給我的API與代碼的一個認證的谷歌雲終點呼叫:如何從iOS客戶端

func userService() -> GTLServiceUserController{ 
    var service : GTLServiceUserController? = nil 
    if service == nil { 
     service = GTLServiceUserController() 
     service?.retryEnabled = true 
    } 
    return service! 
} 

而且

func callApi() { 
    let service = userService() 
    let query = GTLQueryUserController.queryForGetAllUsers() 
    service.executeQuery(query) { (ticket: GTLServiceTicket!, object: AnyObject!, error: NSError!) -> Void in 
     if(error != nil){ 
      print("Error :\(error.localizedDescription)") 
      return 
     } 

     let resp = object as? GTLUserControllerOperationResponse 
     if(resp != nil){ 
      print(resp) 
     } 
    } 
} 

我'越來越The operation couldn’t be completed. (com.google.appengine.api.oauth.OAuthRequestException: unauthorized)

我已經閱讀了這article,但我不希望我的用戶登錄,而是我希望我的應用程序將其憑據提供給服務沒有用戶交互的認證。

我想使用這個approach,但他們沒有告訴如何使用iOS應用程序。

所以基本上我想能夠在沒有任何用戶交互或登錄對話框的情況下成功調用我的API。

請注意,我有我的項目這些類:

  • GTMOAuth2Authentication
  • GTMOAuth2SignIn
  • GTMOAuth2ViewControllerTouch

感謝的提前

回答

1

如果您不需要驗證個人用戶(通過OAuth2登錄),那麼你不會需要做其他任何事情,您的應用程序可以直接調用API(如「調用Endpoint API(未經身份驗證)」部分所述)。

服務帳戶用於服務器到服務器的交互,不能用於驗證個人用戶;如果您在iOS應用程序中嵌入了服務帳戶&,任何人都可以從應用程序中提取它並開始調用您的API,因此它不會添加任何安全性。

+0

感謝您的回答,您能告訴我如何將我的服務帳戶和密鑰嵌入我的應用程序嗎? –

+0

如何使用Google的默認憑據?是否有Android版本的GoogleAuthUtil庫的iOS版本? –