laravel - 社交名流刷新令牌
问题描述
我正在构建一个 Laravel 应用程序,我需要用户能够连接社交渠道,例如 Twitter、Twitch、YouTube 等。我不需要他们能够使用这些媒体登录,而是连接它们,所以我我的应用程序可以获取访问令牌以从他们的社交渠道检索信息。
我开始使用 Socialite 连接 Twitch,但我注意到他们的令牌已过期并且我也收到了 refresh_token。
我遵循社交名流关于处理无效令牌的建议,而不是关注它何时到期。我遇到的问题是..如何用社交名流刷新令牌?我似乎无法找到可以从 refresh_token 获取新令牌的方法。
谁能告诉我这是否甚至内置于社交名流中,或者我是否必须自己构建它,甚至使用社交名流以外的其他东西?
解决方案
刷新令牌不取决于 Laravel 社交名流。
这是您在授权服务器上执行的操作。
如果是 Twitch,请参阅:https ://dev.twitch.tv/docs/authentication#refreshing-access-tokens
每个社交名流提供者都有自己的端点。但他们都应该遵循OAuth2 RFC
在 Laravel 中,你可以像这样使用 Guzzle:
$http = new GuzzleHttp\Client;
$response = $http->post('https://id.twitch.tv/oauth2/token', [
'form_params' => [
'grant_type' => 'refresh_token',
'refresh_token' => '<your refresh token>',
'client_id' => '<your client ID>',
'client_secret' => '<your client secret>',
'scope' => '',
],
]);
return json_decode((string) $response->getBody(), true);
Ps 快速浏览后,您似乎可以使用Provider::getAuthUrl()动态检索此 URL ,但这不在合同中...
推荐阅读
- python - 我正在做一个代码,但我没有看到我做错了什么。我不断收到此错误'ValueError:int()的无效文字,基数为10:'2a'
- angular - 服务返回数据但无法订阅
- c# - C# AmazonDeviceFarmClient ListDevicesAsync 不返回完整的设备列表
- reactjs - 使用带有 React 文本输入和 Typescript 的 lodash 油门
- python - 从python中的灰度热图创建多色阈值图像
- angular - 使用 angular 4 使用 *ngIf 的文本区域验证
- postgresql - 触发复制表的数据更改 - postgres
- javascript - 仅在以下情况下才显示页面
- scala - Scala:将数据框的字典列转换为表
- arrays - Swift:构造一个将处理 JSON/Dictionalry 解析的对象的正确实现是什么