Я реализовал эти инструкции в своем приложении для iOS:
https://developers.google.com/identity/sign-in/ios/sign-in
А эти в моем Google Cloud Endpoints API:
https://cloud.google.com/appengine/docs/java/endpoints/consume_ios
за исключением того, что, конечно, я не делаю немного с GTMOAuth2ViewControllerTouch
.
Эти двое не женятся. Службе конечных точек в приложении iOS требуется установленный на ней авторизатор, который реализует GTMFetcherAuthorizationProtocol
. Где я могу получить этот авторизатор из обратных вызовов Google Sign-in?
Этот обратный вызов в AppDelegate передает экземпляр GIDGoogleUser, у которого есть экземпляр GIDAuthentication с полем accessToken (String). Вот что я хочу передать в App Engine:
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
log.debug("Access token: \(user.authentication.accessToken)")
// TODO: What do I do with this now?
}
Вот где сгенерированной службе нужен токен. В моем случае API не очень хорошо называется просто «Api», поэтому сгенерированные источники — это GTLServiceApi, GTLQueryApi и т. д.
private func executeQuery(query: GTLQueryApi, completionBlock: (object: AnyObject!, error: NSError!) -> Void) -> Void {
let service = GTLServiceApi()
service.retryEnabled = true
// Whatever we set here should implement GTMFetcherAuthorizationProtocol. Where do we get one of those from the Google Sign-in SDK?
// service.authorizer = TODO
service.executeQuery(query, completionHandler: {(ticket, object, error) -> Void in
completionBlock(object: object, error: error)
})
}
self.service.authorizer = GIDSignIn.sharedInstance().currentUser.authentication.fetcherAuthorizer()
, но это не имело никакого значения. Не могли бы вы сказать, где я могу ошибаться? - person Yogi   schedule 03.01.2017