Laravel 社交名流 Twitter OAuth 在无状态 API 中失败,并显示“会话存储未根据请求设置”

问题描述 投票:0回答:1

我正在致力于使用 Laravel Socialite 将 Twitter OAuth 集成到单页应用程序 (SPA) 的无状态 API 中。我在尝试生成授权 URL 时遇到错误。

问题: 在 Twitter Socialite 驱动程序上调用 redirect() 方法时,我收到以下错误:

Session store not set on request.

这是我的控制器的相关部分:

public function getSocialRedirect(Request $request, string $provider)
{
    try {
        $url = Socialite::driver('twitter')
            ->stateless()
            ->scopes($scopes)
            ->with(['state' => $state])
            ->redirect()
            ->getTargetUrl();

        return response()->json([
            'url' => $url,
        ]);
    } catch (\Exception $e) {
        throw $e;
    }
}

我还在我的配置中添加了这个,以使用 oauth2

'twitter' => [
        'enabled'       => env('TWITTER_ENABLED', false),
        'client_id'     => env('TWITTER_CLIENT_ID'),
        'client_secret' => env('TWITTER_CLIENT_SECRET'),
        'redirect'      => env('TWITTER_REDIRECT_URI'),
        'oauth'         => 2
    ]

我已经按照 Socialite 文档中建议的 API 使用方法使用了 stateless() 方法。 路线在routes/api.php

如何使用 Laravel Socialite 以完全无状态的方式生成 Twitter OAuth 授权 URL,适合在 SPA 中使用?有没有办法完全绕过会话要求? 任何见解或替代方法将不胜感激。

laravel twitter oauth-2.0 laravel-socialite
1个回答
0
投票

如果需要会话状态、CSRF 保护,则需要使用 Web 中间件。

您的路由应该进入 Web 中间件内部,如下所示:

Route::group(['middleware' => ['web']], function () {
    // your routes here
});
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.