web-dev-qa-db-ja.com

Laravel 5.5社交界の統合はエラーを示していますformatRedirectUrl()は配列型でなければならず、nullが与えられます

Facebookのログインに「laravel/socialite」:「^ 3.0」を使用しています。しかし、それはエラーを示しています

タイプエラー:Laravel\Socialite\SocialiteManager :: formatRedirectUrl()に渡される引数1は、/ var/www/html/mas/vendor/laravel/socialite/src /SocialiteManager.phpで呼び出されるnullが指定されたタイプ配列である必要があります。

ログインコントローラで以下の関数を呼び出すと発生します

public function socialLogin($social)
{
    return Socialite::driver($social)->redirect();
}
5
Nithin John

こんにちはあなたはソーシャルメディアの資格情報を与えるために欠けていますそれを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'),
    ],
14
Jd Patel

構成キャッシュファイルをクリアする必要があります、どうやって? php artisanを使用すると、コマンドconfig:clearが表示されます。それを実行します:

php artisan config:clear

laravel\Socialite\SocialiteManager :: createFacebookDriver()内の$ config変数にアクセスすると、以前はSocialiteで「表示」されていなかった構成要素がconfig/services.facebook(Facebookなど)に保存されます。 。

要するにphp artisan config:clearを実行します

12
Siro_Diaz

これは最近私に起こりました。StackOverflowの次の投稿を読んだ後で修正しました。

laravelで移行を機能させるために「composerdump-autoload」コマンドを実行する必要があるのはなぜですか

解決策は、基本的に次のコマンドを実行することです。

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

4
Mike Jimenez

私も同じ問題を抱えていました。

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();
}
2
Mz1907

問題は、関数socialLogin($ social)に渡されるパラメーターにあります。 Socialiteのdrvier関数で「github」または「facebook」文字列を手動で設定してみてください。

Web.phpのルートで「github」、「facebook」などに言及することを忘れないでください

2
Saif Ansari

これらを試してください

  1. Config /services.phpにすべてのソーシャルメディアがあるかどうかを確認します
  2. 登録ページまたはログインページで、Facebookに対応するURLを確認してください

    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でエラーに直面しているだけだと言ったように、それは最初の3つのステップにあるに違いないと確信しています

0
Srikanth Gopi

config/services.phpファイルを設定し、キャッシュをクリアすることで問題を解決した後も、同じ問題が発生していました。プロジェクトディレクトリで実行

php artisan optimize:clear
php artisan cache:clear
php artisan config:clear
php artisan config:cache

これにより、キャッシュ全体が確実にクリアされます。

[〜#〜] note [〜#〜]:Laravelのコアファイルを変更するには、ほとんどの場合、上記のコマンドをLaravelは、アプリケーションの速度を向上させるために、キャッシュを大幅に使用する傾向があります

0
Open vendor\laravel\socialite\src\SocialiteManager.php and 
Replace
  protected function createFacebookDriver()
    {
         $config = $this->app['config']['services.facebook'];
          return $this->buildProvider(
            FacebookProvider::class, $config
        );
    }

To
  protected function createFacebookDriver()
    {
         $config = $this->app['config']['services.stripe.facebook'];
          return $this->buildProvider(
            FacebookProvider::class, $config
        );
    }
0
Vijay Verma

ベンダー\ laravel\socialite\src\SocialiteManager.phpを開きます保護された関数に置き換えますformatRedirectUrl(array $ config){$ redirect = value($ config ['redirect']);

    return Str::startsWith($redirect, '/')
                ? $this->app['url']->to($redirect)
                : $redirect;
}
0
Vijay Verma