Php 如何将用户重定向到各自的提供商,如laravel 5.4中的facebook、twitter
将Php 如何将用户重定向到各自的提供商,如laravel 5.4中的facebook、twitter,php,database,laravel-5,laravel-5.4,Php,Database,Laravel 5,Laravel 5.4,将$authUser->$provider==='twitter'更改为您实际需要的正确测试,我想应该是$provider=='twitter'它将所有提供商重定向到facebook OnlyTanks作为您的帮助人…它工作得很好…非常感谢 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Socialite; use App\User; use Auth; class SocialLogin
$authUser->$provider==='twitter'
更改为您实际需要的正确测试,我想应该是$provider=='twitter'它将所有提供商重定向到facebook OnlyTanks作为您的帮助人…它工作得很好…非常感谢
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Socialite;
use App\User;
use Auth;
class SocialLoginController extends Controller
{
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
public function handleProviderCallback($provider)
{
try{
$user = Socialite::driver($provider)->user();
}catch(Exception $e){
return redirect('auth/{$provider}');
}
// dd($user);
$authUser = $this->findOrCreateUser($user);
Auth::login($authUser, true);
if($authUser->$provider === 'twitter') {
return redirect()->intended('https://twitter.com/');
}
return redirect()->intended('https://www.facebook.com/');
}
Private function findOrCreateUser($providerUser)
{
$authUser = User::where('provider_id', $providerUser->id)->first();
if ($authUser){
return $authUser;
}
return User::create([
'name' => $providerUser->name,
'email' => $providerUser->email,
'provider_id' => $providerUser->id,
'avatar' => $providerUser->avatar,
'avatar_original' => $providerUser->avatar_original,
// 'profileUrl' => $twitterUser->profileUrl
]);
}
}
Route::get('auth/{provider}', ['as' => 'auth/{provider}', 'uses' => 'SocialLoginController@redirectToProvider']);
Route::get('auth/{provider}/callback',['as' => 'auth/{provider}/callback', 'uses' => 'SocialLoginController@handleProviderCallback']);