2015-03-13 82 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