Laravel 5.5社交网站集成显示错误formatRedirectUrl()必须是类型数组,null给定

问题描述 投票:3回答:6

我正在使用“laravel / socialite”:“^ 3.0”,登录facebook。但它显示错误

类型错误:传递给Laravel \ Socialite \ SocialiteManager :: formatRedirectUrl()的参数1必须是数组类型,给定null,在/var/www/html/mas/vendor/laravel/socialite/src/SocialiteManager.php中调用。

当我在登录控制器中调用以下函数时会发生这种情况

public function socialLogin($social)
{
    return Socialite::driver($social)->redirect();
}
laravel-5 laravel-socialite
6个回答
9
投票

嗨,你错过了提供社交媒体的凭据,将其放在config / services.php中

'facebook' => [
        'client_id' => env('FACEBOOK_CLIENT_ID'),
        'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_FACEBOOK'),
    ],
    'google' => [
        'client_id' => env('GOOGLE_CLIENT_ID'),
        'client_secret' => env('GOOGLE_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_GOOGLE'),
    ],
    'twitter' => [
        'client_id' => env('TWITTER_CLIENT_ID'),
        'client_secret' => env('TWITTER_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_TWITTER'),
    ],
    'linkedin' => [
        'client_id' => env('LINKEDIN_CLIENT_ID'),
        'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_LINKEDIN'),
    ],
    'instagram' => [
        'client_id' => env('INSTAGRAM_CLIENT_ID'),
        'client_secret' => env('INSTAGRAM_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_INSTAGRAM'),
    ],

7
投票

你必须清除配置缓存文件,怎么做?如果你使用php artisan,你会看到命令config:clear。运行:

php artisan config:clear

现在如果您访问Laravel \ Socialite \ SocialiteManager :: createFacebookDriver()中的$ config变量,您将获得存储在config / services.facebook(例如Facebook)中的配置元素,之前对于Socialite不是“可见”的。

简而言之:运行php artisan config:clear


1
投票

最近刚发生这种情况,在StackOverflow上阅读以下帖子后修复了它:

Why do I have to run "composer dump-autoload" command to make migration work in laravel

解决方案基本上是运行以下命令:

php artisan clear-compiled composer dump-autoload php artisan optimize


1
投票

问题在于传递给函数socialLogin($ social)的参数。尝试在Socialite的drvier函数中手动设置'github'或'facebook'字符串。

别忘了在web.php的路线中提到'github','facebook等


1
投票

我有同样的问题。

我在阅读Laravel doc时因为复制/粘贴而出现此错误。在我的例子中,在loginController.php中改变这个:

// I copied this from Laravel doc
public function redirectToProvider()
{
    return Socialite::driver('github')->redirect();
}

//What I really needed
public function redirectToProvider()
{
    return Socialite::driver('google')->redirect();
}

0
投票

试试这些

  1. 检查config / services.php中是否包含所有社交媒体
  2. 在您的注册或登录页面上,检查对应于Facebook的网址 a href="{{ url('/login/facebook') }}"
  3. 转到路由并检查是否已正确配置路由 Route::get('login/{social}', 'Auth\LoginController@redirectToProvider'); Route::get('login/{social}/callback', 'Auth\LoginController@handleProviderCallback');
  4. 打开Auth / LoginController并检查是否有 use Socialite; public function redirectToProvider($social) { Socialite::driver($social)->redirect(); } public function handleProviderCallback($social) { $user = Socialite::driver($social)->user(); }

正如你所提到的,你只是面对facebook的错误,我很确定它必须在前三个步骤

© www.soinside.com 2019 - 2024. All rights reserved.