我试图让我的回调网址动态,因为我在多个身份验证系统中配置了社交网站。我尝试使用socialiteproviders/manager
,如下所示:
$clientId = env($provider."_client_id");
$clientSecret = env($provider."_client_secret");
$redirectUrl = "the url i want";
$config = new \SocialiteProviders\Manager\Config($clientId,$clientSecret,$redirectUrl);
return Socialite::with($provider)->setConfig($config)->redirect();
但它说:
调用未定义的方法Laravel \ Socialite \ Two \ FacebookProvider :: setConfig()
尝试使用Facebook登录时。
有人可以帮帮我吗?谢谢。
答案 0 :(得分:0)
我可以复制并找到解决方案。您提供的代码已经过时,我在这里找到了它的其他实例:https://laravel.io/forum/07-28-2016-dynamic-callback-url-laravel-socialite
默认情况下,Socialite将通过传递$ providerName = services.php
来获取facebook
中的提供程序配置
所以您的代码现在变为:
// The services.php config will return null, fix it by using: strtoupper()
$clientId = env(strtoupper($provider . "_client_id"));
$clientSecret = env(strtoupper($provider . "_client_secret"));
$redirectUrl = "/the-url-i-want";
// ->redirect() acts as a closure, without it, you'll get an error like:
// "Serialization of 'Closure' is not allowed"
$user = Socialite::with($provider)->redirect();
return redirect()->to($redirectUrl)->with(['user', $user]);
有关使用会话数据重定向的更多信息: https://laravel.com/docs/6.x/redirects#redirecting-with-flashed-session-data