我在我的網站中實現了Facebook登錄功能。我正在使用Laravel 5.1和社交名稱。我遇到了幾個問題。在最好的情況下,一切都像魅力一樣,但是,現在我不處理如果用戶點擊Facebook登錄按鈕時會發生什麼,但是當被要求給予我的應用權限時,他/她點擊取消。我不處理如果有人通過應用程序設置從Facebook中刪除我的應用程序,並重新訪問我的應用程序會發生什麼情況。我的應用程序應該檢測到這一點,並提示該用戶重新登錄,如果有人通過應用程序設置禁用Facebook平臺並登錄到我的應用程序,會發生什麼情況。最後但並非最不重要的是,如果我的應用令牌過期並且有人嘗試登錄,會發生什麼情況?使用Laravel 5.1測試Facebook登錄流程
路線:
Route::get('/signup/facebook/',[
'uses' => '[email protected]',
'as' => 'auth.getSocialAuth'
]);
Route::get('/signup/facebook/callback/',[
'uses' => '[email protected]',
'as' => 'auth.getSocialAuthCallback'
]);
FacebookCotroller:
<?php namespace Podobri\Http\Controllers;
use Podobri\Models\User;
use Auth;
use Socialite;
class FacebookController extends Controller {
public function getSocialAuth(){
return Socialite::driver('facebook')->redirect();
}
public function getSocialAuthCallback()
{
try {
$user = Socialite::driver('facebook')->user();
} catch (Exception $e) {
return redirect('signup/facebook');
}
$authUser = $this->findOrCreateUser($user);
Auth::login($authUser, true);
return redirect()->route('problems.index');
}
private function findOrCreateUser($facebookUser) {
$authUser = User::where('facebook_id', $facebookUser->id)->where('email', '!=', $facebookUser->user['email'])->first();
if ($authUser) {
return $authUser;
}
return User::create([
'first_name' => $facebookUser->user['first_name'],
'last_name' => $facebookUser->user['last_name'],
'email' => $facebookUser->user['email'],
'facebook_id' => $facebookUser->id,
]);
}
}
Facebook登錄按鈕的代碼:
<a class="fb-log" href="{{ route('auth.getSocialAuth') }}">Facebook</a>
我非常期待指導方針。
https://developers.facebook.com/docs/facebook-login/handling-declined-permissions,HTTPS: //developers.facebook.com/docs/facebook-login/access-tokens/debugging-and-error-handling – CBroe