2014-04-17 119 views
1

我是Laravel新人Laravel 4 - Google登錄

我正在測試Google通過遵循指南使用oauth-4-laravel進行登錄。我成功地選擇我的谷歌帳戶,但之後它返回喜歡的網址:

http://host.com/google/loginwithgoogle?code=4/SXVJ-Ou9xLt60kZ-OR68DxxxxxXFD.kqJwUtyEmhcfXE-sT2ZxxxxxxxxxxxxigI

我該如何處理我的Route.php內這條路文件?我對Route.php當前的代碼是:

Route::get('login', function() 
{ 
return View::make('login'); 
}); 

Route::controller('google', 'GoogleController'); 

而且我GoogleController.php代碼

public function postLoginwithgoogle(){ 

    // get data from input 
    $code = Input::get('code'); 

    // get google service 
    $googleService = OAuth::consumer('Google'); 

    // check if code is valid 

    // if code is provided get user data and sign in 
    if (!empty($code)) { 

     // This was a callback request from google, get the token 
     $token = $googleService->requestAccessToken($code); 

     // Send a request with it 
     $result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true); 

     $message = 'Your unique Google user id is: ' . $result['id'] . ' and your name is ' . $result['name']; 
     echo $message. "<br/>"; 

     //Var_dump 
     //display whole array(). 
     dd($result); 

    } 
    // if not ask for permission first 
    else { 
     // get googleService authorization 
     $url = $googleService->getAuthorizationUri(); 

     // return to facebook login url 
     return Redirect::to((string)$url); 
    } 
} 

我懷疑是「後」和「得到」,但我應該怎麼編寫呢?謝謝!

回答

0

不需要路線。只需將用戶重定向到網址:

Redirect::to('<URL provided by Google>'); 

請參閱documentation中的詳細信息。

0

有沒有必要指定一個路由到POST artdarek/oauth-4-laravel與GET工作通過添加令牌後?在網址中。所以基本上你不需要任何額外的路線。

雖然您的路線存在一些問題,但您在此處發佈的示例假定Google會將經過身份驗證的用戶重定向回具有有效令牌的相同網址。在你的情況,我收集這是http://host.com/google/loginwithgoogle,並且你想要使用http://host.com/google。爲了做到這一點,你需要編輯的路線如下:

Route::controller('google', '[email protected]'); //I would remove the "post" part of the name since it is misleading 

當您重定向當有人想與谷歌登錄然後是應該工作到現在host.com/google。