access_token
, приобретенный Socialite (через 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);
Через час, когда токен становится недействительным, Google API начинает возвращать 401 Unauthorized
, и Socialize распространяет это:
(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
. Но я не могу найти упоминания в документации или исходном коде Socialize, которые позволили бы мне это сделать.
Действительно ли единственный способ сделать это - использовать библиотеку API Google и сделать это вручную? Разве это не убивает всю идею использования Socialize?
Примечание. Я стараюсь не звонить redirect()
снова, так как это может заставить пользователя каждый час выбирать одну из своих учетных записей Google, что раздражает.
Спасибо!
refresh_token
, если его нельзя использовать дальше без реализации собственного клиента вручную? - person rootpd   schedule 14.07.2017