PHP程序员

PHP实现APP使用谷歌授权登录获取用户信息

2021-01-13  本文已影响0人  php转go

谷歌官方服务器进行身份验证链接

https://developers.google.com/identity/sign-in/web/backend-auth

如果您将Google登录用于与后端服务器通信的应用或网站,则可能需要识别服务器上当前登录的用户。为了安全地执行此操作,在用户成功登录后,请使用HTTPS将用户的ID令牌发送到您的服务器。然后,在服务器上,验证ID令牌的完整性,并使用令牌中包含的用户信息建立会话或创建新帐户。

PHP实现

引入Google官方扩展

composer require google/apiclient

php代码

require_once 'vendor/autoload.php';
//客户端授权后获取到id_token,再传给后端去获取授权信息,入库处理
$id_token=$_POST['id_token'];
$client = new Google_Client(['client_id' => $CLIENT_ID]);  // Specify the CLIENT_ID of the app that accesses the backend
$payload = $client->verifyIdToken($id_token);
if ($payload) {
  $userid = $payload['sub'];
  // If request specified a G Suite domain:
  //$domain = $payload['hd'];
} else {
  // Invalid ID token
}
{
 // 这六个字段包含在所有Google ID令牌中。
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // 仅当用户 向应用程序授予了“配置文件”和/或“电子邮件” OAuth范围时,才包含这七个字段。
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}
上一篇 下一篇

猜你喜欢

热点阅读