2015-03-13 29 views
2

我正在遷移在我的PHP應用上從舊的和現在不推薦使用的OpenID登錄到新的OAuth 2.0,請登錄Google當用戶拒絕/取消同意屏幕時,Google OAuth 2.0重定向網址

所有我的用戶需要的是他的電子郵件地址,這樣我就可以註冊或登錄他進來。這就像預期的所有工作,但我注意到,如果用戶拒絕同意畫面(與取消按鈕,白某)同意屏幕再次顯示。 當用戶拒絕同意屏幕時,有沒有辦法指定重定向網址,以便我可以向他顯示自定義消息?

我的代碼是:

$client = new Google_Client(); 
$client->setAuthConfig(Config::$GOOGLE_API_AUTH_CONFIG_JSON); 
$client->addScope(Google_Service_Oauth2::USERINFO_EMAIL); 
$client->setRedirectUri(Config::$WEBSITE_URL . 'index.php?page=login&action=login'); 
if (!isset($_GET['code'])) { 
    $auth_url = $client->createAuthUrl(); 
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 
} else { 
    $client->authenticate($_GET['code']); 
    $oauth2_service = new Google_Service_Oauth2($client); 
    UserLogin::get()->signupOrLogin($oauth2_service->userinfo->get()->getEmail()); 
} 

回答

3

不能指定另一個URL,但你可以在你的代碼檢查上查詢字符串中的「錯誤」的參數 - 這將被設置爲在用戶取消。詳細瞭解如何處理https://developers.google.com/accounts/docs/OAuth2WebServer#handlingtheresponse

+0

太棒了!我的代碼是在URL中沒有* code *參數的情況下創建的,它總是重定向到Google Auth URL。所以,我甚至沒有注意到用戶在拒絕同意屏幕時被髮回到我的頁面。謝謝! – 2015-03-14 09:21:03

相關問題