Использование Laravel Socialite для входа в facebook

Я новичок в Laravel, и я следую руководству http://www.codeanchor.net/blog/complete-laravel-socialite-tutorial/, чтобы войти в систему через Facebook в мое приложение. Однако почти везде я нахожу учебник с использованием Github или Twitter для плагина Socialite, предоставленного в Laravel.

Моя проблема заключается в том, что, следуя всем инструкциям, когда я нажимаю кнопку "Войти в Facebook", она выдает "Недопустимое исключение аргумента" с указателем No Socialite. ".

Другой вопрос, казалось, сузил вещи: https://stackoverflow.com/info/29673898/laravel-socialite-invalidargumentexception-in-socialitemanager-php-line-138-n

Утверждение, что проблема находится в config/services.php

Теперь у меня есть app_id и app_secret. Однако ссылка перенаправления кажется запутанной, поскольку я не могу найти ее на Facebook. Я знаю, что именно здесь мое приложение должно пойти в Facebook для входа, однако, не зная, что это должно быть.

Кто-нибудь знает об этом.

Ответы

Ответ 1

В вашем composer.json add- "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',
    ],

Вам нужно создать два маршрута, мои вот такие:

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


Route::get('/login/callback/{provider?}',[
    'uses' => '[email protected]',
    '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 так:

enter image description here

Ответ 2

Создайте поставщика в файле 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', '[email protected]');

Route::get('callback', '[email protected]');