通过Socialite获取的
我可以通过更改重定向调用来获取
现在有了
难道真的唯一的方法是使用Google的API库并手动执行吗?这不会破坏使用Socialite的整个想法吗?
注意:我试图避免再次调用
谢谢!
access_token
(通过Socialite::driver(self::PROVIDER)->user()
)具有有限的有效期限。对于Google来说,它是一个小时。我可以通过更改重定向调用来获取
refresh_token
:Socialite::driver(self::PROVIDER)->stateless()->with([
'access_type' => 'offline',
])->redirect()
使用access_token
调用,我可以在一个小时内读取用户数据。
// $token = read_stored_access_token()
\Socialite::driver(self::PROVIDER)->userFromToken($accessToken);
一个小时后,当令牌失效时,谷歌API开始返回401未经授权
,并将其传播出去:
(1/1) ClientException
Client error: `GET https://www.googleapis.com/plus/v1/people/me?prettyPrint=false` resulted in a `401 Unauthorized` response:
{"error":{"errors":[{"domain":"global","reason":"authError","message":"Invalid Credentials","locationType":"header","loc (truncated...)
现在有了
refresh_token
,我应该能够轻松地刷新access_token
。但是我在Socialite文档或源代码中找不到任何提供此功能的说明。难道真的唯一的方法是使用Google的API库并手动执行吗?这不会破坏使用Socialite的整个想法吗?
注意:我试图避免再次调用
redirect()
,因为这可能会迫使用户每小时选择自己的Google帐户,这很烦人。谢谢!