php - Google 登录端点不再返回用户名

标签 php oauth-2.0 google-signin

我正在使用 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/

相关文章:

php - Laravel 4.2 简单 session 逻辑不起作用

php - 脚本终止时调用函数

php - Ajax 文件组织最佳实践

php - 警告 : mysql_query() [function. mysql-query]:无法将结果集保存在

firebase - React Native Google Signin idToken null

java - 为什么不推荐使用 GetServerAuthCodeResult?如何在已安装的应用程序中执行等效操作?

javascript - 如何在 Firefox 插件中使用 oauthorizer

python - 谷歌分析 .dat 文件丢失,回退到 noauth_local_webserver

android - com.google.android.gms.common.api.ApiException : 10

ios - Firebase google登录身份验证AppDelegate-使用未解析的标识符 'isMFAEnabled'