是否可以在运行时更改config/services.php中设置的redirect_uri的值?
我尝试这样做:
返回 $socialite->driver('facebook')->redirectUrl(newUrl)->redirect();
但它会抛出一个错误,指出redirect_uri 应与 OAuth 对话框中的一致。进一步检查错误消息,redirect_uri 的值为空,显然,redirectUrl() 方法不起作用。
PS:
这是我使用的在composer.json 中定义的社交名流版本:
“laravel/社交名流”:“^2.0”
解决这个问题的方法是:
public function redirectToProvider($accountType, $provider)
{
return Socialite::driver($provider)
->with(['redirect_uri' => "YOUR_NEW_URL"])
->stateless()
->redirect();
}
使用此方法,您可以覆盖http请求中的任何值(包括范围)。
我正在使用
^5.9
版本的 laravel/socialite
,使用 redirectUrl()
按我的预期工作。我认为关键是你在重定向和获取用户时都必须使用这个方法,所以参数是相等的。
// Just redirecting
Socialite::driver('google')
->redirectUrl($redirectUrl)
->redirect();
// Fetching user
Socialite::driver('google')
->redirectUrl($redirectUrl)
->user();
此外,对于 Google Oauth,如果您刚刚添加了重定向 URL,您可能需要给它一些时间才能生效,至少 Google 管理面板中是这么说的。