替换
https://www.googleapis.com/plus/v1/people/me?
网址为
https://www.googleapis.com/oauth2/v3/userinfo?
Google已更新了API端点,建议使用此https://www.googleapis.com/oauth2/v3/userinfo?
端点获取用户详细信息。
https://developers.google.com/people/legacy
,
此解决方案确实有效。解决了我的问题。
非常感谢。
如果有人遇到此问题,这里是整个文件。只需更改位于以下位置的GoogleProvider类:
./vendor/laravel/socialite/src/Two/GoogleProvider.php:
class GoogleProvider extends AbstractProvider implements ProviderInterface{
protected $scopeSeparator = ' ';
/**
* The scopes being requested.
*
* @var array
*/
protected $scopes = [
'openid','profile','email',];
/**
* {@inheritdoc}
*/
protected function getAuthUrl($state)
{
return $this->buildAuthUrlFromBase('https://accounts.google.com/o/oauth2/auth',$state);
}
/**
* {@inheritdoc}
*/
protected function getTokenUrl()
{
return 'https://accounts.google.com/o/oauth2/token';
}
/**
* Get the POST fields for the token request.
*
* @param string $code
* @return array
*/
protected function getTokenFields($code)
{
return array_add(
parent::getTokenFields($code),'grant_type','authorization_code'
);
}
/**
* {@inheritdoc}
*/
protected function getUserByToken($token)
{
//fixing legacy google+ api
$response = $this->getHttpClient()->get('https://www.googleapis.com/oauth2/v3/userinfo?',[
'query' => [
'prettyPrint' => 'false',],'headers' => [
'Accept' => 'application/json','Authorization' => 'Bearer '.$token,]);
return json_decode($response->getBody(),true);
}
/**
* {@inheritdoc}
*/
protected function mapUserToObject(array $user)
{
//fixing legacy google+ api
$user['id'] = Arr::get($user,'sub');
$user['verified_email'] = Arr::get($user,'email_verified');
$user['link'] = Arr::get($user,'profile');
$avatarUrl = Arr::get($user,'image.url');
return (new User)->setRaw($user)->map([
'id' => Arr::get($user,'sub'),'nickname' => Arr::get($user,'nickname'),'name' => Arr::get($user,'name'),'email' => Arr::get($user,'email'),'avatar' => $avatarUrl = Arr::get($user,'picture'),'avatar_original' => $avatarUrl,]);
}
}
,
我也有 Laravel 5.4,就我而言,帮助将 laravel/socialite
从 3.0.* 升级到 3.4。
我在 composer: "laravel/socialite": "~3.0"
中设置了这个设置并运行了 composer update
。
不要忘记清除缓存:php artisan cache:clear
本文链接:https://www.f2er.com/3161552.html