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

Я пытаюсь войти, используя социальные сайты в Laravel 5.1. Я установил Socialite и следующий учебник ниже:

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 логин с гугл аккаунтом

8

Решение

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

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

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

<?php
//Routes.php

Route::get('trygithub', function(){
$user = Socialize::with('github')->user()
dd($user);
});

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

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

Обновление-1 ответ:

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

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

Обновление-2 ответ:

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

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

6

Другие решения

Это зависит от вас, чтобы управлять этим.

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

Как только вы будете перенаправлены с 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, а не из вашего веб-приложения. Таким образом, у вашего пользователя будет «id» для вашего веб-приложения и «github_id», который вы храните, чтобы вы знали, к какому пользователю он принадлежит.

2

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

Пользователь => имеет много «социальных аккаунтов»

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

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

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

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

2
По вопросам рекламы [email protected]