You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I modified the code on AuthController so can add more socialite providers buy changing public function redirectToProvider()
{
return Socialite::driver($github)->redirect();
}
to
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
here is a full code
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return Response
*/
public function handleProviderCallback($provider)
{
$User = Socialite::driver($provider)->user();
$user = $this->user->getByProviderId($User->id);
if (auth()->check()) {
$currentUser = auth()->user();
if ($currentUser->provider_id) {
return redirect()->back();
} else {
if ($user) {
return redirect()->back();
} else {
$this->bindProvider($currentUser, $User);
return redirect()->back();
}
}
} else {
if ($user) {
auth()->loginUsingId($user->id);
return redirect()->to('article');
} else {
$this->registerUser($User);
return redirect()->to('auth/register');
}
}
}
/**
* Bind the github account.
*
* @param $currentUser
* @param $registerData
* @return mixed
*/
public function bindProvider($currentUser, $registerData)
{
$currentUser->provider_id = $registerData->user['id'];
$currentUser->name = $registerData->nickname;
$currentUser->url = $registerData->user['url'];
return $currentUser->save();
}
/**
* Save the register data in session.
*
* @param $registerData
*/
public function registerUser($registerData)
{
$data['avatar'] = $registerData->user['avatar_url'];
$data['provider_id'] = $registerData->user['id'];
$data['url'] = $registerData->user['url'];
$data['name'] = $registerData->nickname;
$data['nickname'] = $registerData->user['name'];
$data['email'] = $registerData->user['email'];
session()->put('oauthData', $data);
}
/**
* Display the github oauth for register page.
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View
*/
public function create()
{
if (! session()->has('oauthData')) {
return redirect()->to('login');
}
$oauthData = array_merge(session('oauthData'), request()->old());
return view('auth.register', compact('oauthData'));
}
/**
* Store a new user.
*
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function store()
{
if (! session()->has('oauthData')) {
return redirect('login');
}
$this->validator(request()->all())->validate();
$oauthData = session('oauthData');
$data = array_merge($oauthData, request()->all());
$data['password'] = bcrypt($data['password']);
$data['status'] = true;
auth()->guard()->login(User::create($data));
session()->forget('oauthData');
return redirect()->to('article');
}
But I get this
The text was updated successfully, but these errors were encountered:
This error is 'Undefined index: avatar_url'. You need to modify the method of registerUser(). You try to run the code of dd($registerData) to see what in it. If you want to support login for facebook, you need to modify the code.I had only supported login with github.
I modified the code on AuthController so can add more socialite providers buy changing public function redirectToProvider()
{
return Socialite::driver($github)->redirect();
}
to
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
here is a full code
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
But I get this
The text was updated successfully, but these errors were encountered: