16

ただし、私はLaravelを初めて使用し、 http://www.codeanchor.net/blog/complete-laravel-socialite-tutorial/のチュートリアルに従って、 Facebookを介してユーザーをアプリケーションにログインさせています。しかし、Laravel で提供されている Socialite Plugin の Github または Twitter を使用したチュートリアルはほとんどどこにでもあります。

私の問題は、チュートリアルのすべてに従って、[Facebook にログイン] ボタンをクリックすると、Socialite ドライバーが指定されていない状態で「無効な引数例外」がスローされることです。

別のスタックオーバーフローの質問は、物事を絞り込むように見えました :

問題が config/services.php にあることを述べる

今、私は app_id と app_secret を持っています。ただし、リダイレクト リンクは、Facebook でも見つからないため、わかりにくいようです。これは、私のアプリがログインのために Facebook にアクセスする場所であることは承知していますが、どうあるべきかはわかりません。

誰でもこれについて何か考えがありますか。

4

3 に答える 3

39

composer.json に追加します-"laravel/socialite": "~2.0",

"require": {
        "laravel/framework": "5.0.*",
        "laravel/socialite": "~2.0",

実行composer update

config/services.phpに以下を追加します。

//Socialite
    'facebook' => [
        'client_id'     => '1234567890444',
        'client_secret' => '1aa2af333336fffvvvffffvff',
        'redirect'      => 'http://laravel.dev/login/callback/facebook',
    ],

2 つのルートを作成する必要があります。私のルートは次のようなものです。

//Social Login
Route::get('/login/{provider?}',[
    'uses' => 'AuthController@getSocialAuth',
    'as'   => 'auth.getSocialAuth'
]);


Route::get('/login/callback/{provider?}',[
    'uses' => 'AuthController@getSocialAuthCallback',
    'as'   => 'auth.getSocialAuthCallback'
]);

上記のルートのコントローラーも次のように作成する必要があります。

<?php namespace App\Http\Controllers;

 use Laravel\Socialite\Contracts\Factory as Socialite;

 class AuthController extends Controller
 {

       public function __construct(Socialite $socialite){
           $this->socialite = $socialite;
       }


       public function getSocialAuth($provider=null)
       {
           if(!config("services.$provider")) abort('404'); //just to handle providers that doesn't exist

           return $this->socialite->with($provider)->redirect();
       }


       public function getSocialAuthCallback($provider=null)
       {
          if($user = $this->socialite->with($provider)->user()){
             dd($user);
          }else{
             return 'something went wrong';
          }
       }

 }

最後に、次のようにサイト URL を Facebook アプリに追加します。

ここに画像の説明を入力

于 2015-06-02T08:12:29.467 に答える
0

config/services.php ファイルの下にプロバイダーを作成します

'facebook' => [
    'client_id' => 'your-fb-client-id',
    'client_secret' => 'your-fb-secret',
    'redirect' => 'http://your-redirect.com/route',
],

次のコードでコントローラーを作成できるようになりました

//this function will redirect users to facebook login page
public function facebook()
{
    return \Socialize::with('facebook')->redirect();
}

public function callback()
{
    $user = \Socialize::with('facebook')->user();

    //now we have user details in the $user array
     dd($user);

}

そしてこれがあなたのルートです

Route::get('facebook', 'LoginController@facebook');

Route::get('callback', 'LoginController@callback');
于 2015-06-02T08:21:01.597 に答える