Laravel 使用社交名将google令牌id进行身份验证

Laravel 使用社交名将google令牌id进行身份验证,laravel,oauth-2.0,google-oauth,google-api-php-client,laravel-socialite,Laravel,Oauth 2.0,Google Oauth,Google Api Php Client,Laravel Socialite,我收到了来自客户端android应用程序的令牌id,该应用程序由谷歌生成。 如何使用社交名将用户授权? 我现在正在使用google_api客户端,但它没有Socialte的便利。如果你想获得用户信息,你必须使用accessToken(有时需要openid)来获得它,最近我制作了一个laravel包来满足这个请求,请检查这里: 如果您可以获得服务器身份验证代码,那么您可以将其交换为accessToken,并使用它查询Google+API 就我而言,我使用的是cordova库 这将为您(如果配置为

我收到了来自客户端android应用程序的
令牌id
,该应用程序由谷歌生成。
如何使用社交名将用户授权?

我现在正在使用google_api客户端,但它没有Socialte的便利。

如果你想获得用户信息,你必须使用accessToken(有时需要openid)来获得它,最近我制作了一个laravel包来满足这个请求,请检查这里:


如果您可以获得服务器身份验证代码,那么您可以将其交换为accessToken,并使用它查询Google+API

就我而言,我使用的是cordova库

这将为您(如果配置为“脱机”)提供一个
serverAuthCode

您可以将其发送到您的服务器。然后,要将其转换为accessToken,您可以调用此socialite方法:

$driver = Socialite::driver($provider); // provider is 'google' here
$access_token = $driver->getAccessToken($serverAuthCode);
然后,您可以使用此令牌获取用户信息:

$socialUser = $driver->userFromToken($access_token);

我只是想帮助那些正在为此而挣扎的人。

使用PHP谷歌API客户端库

首先通过composer安装库

$composer需要google/apiclient

$client = new Google_Client(['client_id' => env('Google_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
}
有关更多详细信息,请查看


我有访问令牌,实际上我也用谷歌api验证过了,我现在如何获取信息?@Mehrdad,你检查过我的软件包吗?想法是客户端在oauth登录后获取访问令牌,然后将访问令牌传递给服务器端,通过我的软件包你可以获取用户信息。是的,tnx,但你知道,我已经在谷歌api中使用Sociait了。我不想依赖另一个库,因为我认为没有它也可以得到结果。干杯:)你想出解决办法了吗?如果是这样,请出于好奇分享,但是
serverAuthCode
也需要验证,不是吗?这是通过
$driver->getAccessToken($serverAuthCode)
验证的,我倾向于这样认为,尽管我找不到任何文档来确认。此方法唯一的问题是“同意”屏幕将要求脱机权限,一些用户可能想知道这到底是怎么回事。对于较旧的版本,请使用
getAccessTokenResponse
,@StevenM我正在按照您的建议做,但我收到一个401错误。奇怪的是,如果我从它工作的相同环境生成authCode(如果我从本地web生成authCode,它在本地web上工作;如果我从生产web生成authCode,它在生产web上工作)。顺便说一句,我使用的是旧版本,所以我使用@JuliSmz建议的
getAccessTokenResponse