【发布时间】:2017-07-13 11:53:50
【问题描述】:
我们已将Google sign 集成到我们想要从服务器离线访问Gmail APIs 的iOS 应用程序中。
我们正在向服务器提交token_Id,但服务器抛出以下异常(服务器是Java):
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
"error" : "invalid_grant",
"error_description" : "Bad Request"
}
要获取令牌 ID,我们使用以下代码 iOS 代码:
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if (error == nil) {
let idToken = user.authentication.idToken
let fullName = user.profile.name
print("Connected for user: \(fullName)")
print("Id Token: \(idToken)")
setAppUserContext(userId: idToken!)
} else {
print("\(error.localizedDescription)")
}
}
我们正在向服务器发送user.authentication.idToken 以供离线访问。
范围如下:
gid?.scopes.append("https://www.googleapis.com/auth/gmail.readonly")
我们已正确设置所需的客户端 ID 和服务器 ID。
对于 GIDSignIn,我们制作了以下属性:
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().signInSilently()
【问题讨论】:
标签: java ios google-api google-oauth gmail-api