我正在使用 Google Sign-In在我的 iOS 应用程序上。一切都运行良好,直到最近我注意到该应用程序不再获取用户名,只返回电子邮件地址。
我正在通过发送到我的服务器的应用程序获取 token ,该 token 用于通过向此端点发送请求来获取完整信息:
https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=MYTOKEN
我现在得到这样的答案:
{
"issuer": "https://accounts.google.com",
"issued_to": "o37l8g.apps.googleusercontent.com",
"audience": "o37l8g.apps.googleusercontent.com",
"user_id": "113504",
"expires_in": 814,
"issued_at": 1452991611,
"email": "myemail@gmail.com",
"email_verified": true
}
我尝试使用其他端点,例如 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
和 https://www.googleapis.com/oauth2/v1/userinfo?access_token=
,但它们都不起作用。
我也尝试过 playground 但找不到要使用的端点,我的范围定义明确,我在 iOS 应用程序中看到所有权限都被请求,但不知何故它仍然没有返回用户名...有什么想法吗?
最佳答案
您应该使用 access_token 而不是 id_token,这样您仍然可以使用以下方法查询 tokeninfo 端点以验证您的 token :
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
但现在您还可以查询其他端点以访问其他信息,例如名称:
https://www.googleapis.com/plus/v1/people/me?access_token=
检查您如何使用 Google SignIn iOS SDK,并确保您向服务器发送的是 access_token 而不是 id_token。
Swift 中的示例:
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
let token = user.authentication.accessToken // YES
let token = user.authentication.idToken // Maybe NO
...
关于php - Google 登录端点不再返回用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834173/