【问题标题】:Socialite refresh tokens社交名流刷新令牌
【发布时间】:2020-10-23 10:08:54
【问题描述】:

我正在构建一个 Laravel 应用程序,我需要用户能够连接社交渠道,例如 Twitter、Twitch、YouTube 等。我不需要他们能够使用这些媒体登录,而是连接它们,所以我的应用程序可以获取访问令牌以从他们的社交渠道检索信息。

我开始使用 Socialite 连接 Twitch,但我注意到他们的令牌已过期并且我也收到了一个 refresh_token。

我遵循社交名流关于处理无效令牌的建议,而不是密切关注它何时到期。我遇到的问题是..如何用社交名流刷新令牌?我似乎无法找到可以从 refresh_token 获取新令牌的方法。

谁能告诉我这是否已内置到社交名流中,或者我是否必须自己构建它,甚至使用社交名流以外的其他东西?

【问题讨论】:

    标签: laravel token laravel-socialite


    【解决方案1】:

    刷新令牌不取决于 Laravel 社交名流。

    这是您在授权服务器上执行的操作。

    如果是 Twitch,请参阅:https://dev.twitch.tv/docs/authentication#refreshing-access-tokens

    每个Socialite Provider 都有自己的端点。但他们都应该关注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);
    

    附:快速浏览后,您似乎可以使用Provider::getAuthUrl() 动态检索此URL,但这不在Contract...

    【讨论】:

    • 啊,好吧。如果社交名流有它会很方便。像 Socialite::driver('twitch')->refreshToken($storedRefreshToken) 和响应给你新的令牌和 expire_at
    • 如果你问我,Laravel Passport 和 Laravel Socialite 对 OAuth2 和 OpenID Connect 的解释都是错误的。
    • 是的。我的意思是登录,确保它会工作。但对于我所需要的,感觉只是解决方案的一半。
    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2021-08-23
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多