我的 google 后端 API 使用 Oauth
2.0,当我使用该代码调用我的一个 api 时:
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)
}
}
}
我收到 操作无法完成。 (com.google.appengine.api.oauth.OAuthRequestException:未经授权)
我已经读过这个 article ,但我不希望我的用户登录,而是我希望我的应用程序在没有用户交互的情况下向服务提供其凭据以进行身份验证。
我想用这个approach ,但他们没有说明如何使用 iOS 应用程序。
所以基本上我希望能够在没有任何用户交互或登录对话框的情况下成功调用我的 API。
请注意,我的项目中有这些类(class):
- GTMOAuth2Authentication
- GTMOAuth2SignIn
- GTMOAuth2ViewControllerTouch
提前致谢
最佳答案
如果您不需要对单个用户进行身份验证(通过 OAuth2 登录),那么您无需执行任何其他操作,您的 App 可以直接调用 API(如“调用端点 API(未验证)”中所述)节)。
服务帐户用于服务器到服务器的交互,不能用于验证个人用户;如果您在 iOS 应用程序中嵌入服务帐户和 key ,任何人都可以从应用程序中提取它并开始调用您的 API,因此它不会增加任何安全性。
关于ios - 如何验证来自 iOS 客户端的 Google Cloud Endpoint 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250815/