Как войти в систему с помощью Github, Facebook, Gmail и Twitter в Laravel 5.1?

Я пытаюсь войти с помощью социальных сайтов в Laravel 5.1. Я установил светский и ниже ниже учебник:

https://mattstauffer.co/blog/using-github-authentication-for-login-with-laravel-socialite

http://tutsnare.com/social-authentication-in-laravel-5/

Я следил за каждым шагом при попытке войти в систему с помощью Github, перенаправляя его в Github, и после входа в систему он перенаправляется на обратный вызов URL, но моя проблема заключается в том, что он не будет хранить данные пользователя в моей базе данных.

Update-1

Теперь моя проблема заключается в том, как аутентифицировать пользователя, используя социальную сеть. Ниже приведен мой код, но он вызывает ошибку, указав неопределенный индексный пароль. Эта ошибка, поскольку Auth::attempt() имеет параметр passsword.

 if (Auth::attempt(['email' => $email, 'user_id' => $user_id])) { return redirect()->intended('user/UserDashboard'); } else { here i am going to insert if user not logged in already } 

Update-2

После некоторых исследований я понял, что мне нужно создать драйверы пользовательской аутентификации. Если у кого-нибудь есть идея, напишите ваши ответы

тот же вопрос задал год назад

Вход в laravel с учетной записью google

    Ну, первое, что я предполагаю, это то, что вы php artisan migrate (И это может быть вашей основной проблемой).

    Следующая проблема, которая у вас есть при хранении данных в базе данных, есть ли у вас рабочее соединение с вашей базой данных из этого класса \App\User ? Если вы назвали его чем-то другим, я прошу вас изменить эту часть после первого \App\[YourClassName] .

    Хорошо, если это работает правильно, у вас может возникнуть проблема с возвратом данных. Просто попробуйте сделать что-то вроде этого по другому пути:

     <?php //Routes.php Route::get('trygithub', function(){ $user = Socialize::with('github')->user() dd($user); }); 

    И если вы получите какой-то вывод на экране, хорошо, что все в порядке. Если вы ничего не получите, попробуйте проверить настройки github.

    И да, еще одна вещь … Тем не менее, если вы не получите желаемого результата, попробуйте прокомментировать ниже. Но я уверен, что это определенно сработает.

    Update-1 :

    Если вы хотите попробовать логин для своего пользователя, и вы используете любой социальный профиль, например, скажем, FB, вам нужно сделать следующее: http://img.ruphp.com/php/Social-Logon.png

    И это не только один случай FB, вы получаете определенные коды, например, в Google, вы получаете один код токена обновления и в твиттере постоянный токен доступа и секрет. Так что просто попробуй так. Или у вас есть один конкретный термин в качестве пароля для вашего пользователя. str_random() может быть полезным таким образом, и я настоятельно рекомендую вместо этих двух.

    Update-2 :

    Я не рекомендую проходить через это, потому что вы ничего не получите, изобретая колесо. Но если вы хотите пройти этот неприятный процесс, вот ссылка.

    http://laravel.com/docs/5.1/authentication#adding-custom-authentication-drivers

    Вам решать это.

    Вы можете найти интересную дискуссию, в которой показано несколько способов сделать то, что вам нужно.

    Как только вы перенаправитесь из Github, вы сможете получить доступ к таким деталям.

      $user->getId(); $user->getNickname(); $user->getName(); $user->getEmail(); $user->getAvatar();` 

    $user->getId() будет единственным идентификатором, возвращаемым из Github.

    Сохраните это поле где-нибудь в своей базе данных. Если вы хотите добавить их в таблицу своих пользователей, вы можете сделать что-то вроде этого:

     $newUser = new \App\User; $newUser->name=$user->getName(); //Or use the nickname //$newUser->name=$user->getNickname(); $newUser->email=$user->getEmail(); $newUser->social_id=$user->getId(); $newUser->save(); 

    Я не рекомендую это как способ сделать это, но он должен дать вам достаточно примера, чтобы заставить его работать.

    Когда кто-то пытается войти в систему с Github, если этот идентификатор не существует, либо создайте для них новую учетную запись, либо выполните ошибку.

    Просто помните, что идентификатор вернулся из Github, а не из вашего webapp. Таким образом, у вашего пользователя будет «идентификатор» для вашего веб-приложения и «github_id», который вы храните, чтобы вы знали, к какому пользователю они принадлежат.

    Идея состоит в том, чтобы хранить таблицу для подключенных учетных записей каждого пользователя. Таблица будет содержать user id , social account type social account id .

    Пользователь => имеет много "социальных счетов"

    социальная учетная запись => имеет один «пользователь»,

    Когда пользователь войдет в систему с социальной учетной записью, мы будем искать социальную учетную запись с social account id и type social account id . получить пользовательский объект и сразу же войти в систему.

    Если пользователь не найден и если социальная сеть api возвращает электронное письмо пользователя, мы получим пользователя по этому email и запустим пользователя, а также подключим новую социальную учетную запись к объекту пользователя. Однако я не рекомендую это, потому что это проблема безопасности, если кто-то изменил электронную почту своего социального аккаунта на существующий адрес электронной почты вашего приложения, он может легко получить доступ к учетной записи.

    Если все вышеизложенное не удастся, нам нужно направить пользователя на экран регистрации, с email мы уже имеем из социальной сети api (если доступно) и social account type , если нам нужно подключиться после успешной регистрации.