我正在致力于使用 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 中使用?有没有办法完全绕过会话要求? 任何见解或替代方法将不胜感激。
如果需要会话状态、CSRF 保护,则需要使用 Web 中间件。
您的路由应该进入 Web 中间件内部,如下所示:
Route::group(['middleware' => ['web']], function () {
// your routes here
});