谷歌官方服务器进行身份验证链接
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"
}