拒绝Facebook身份验证

时间:2011-10-26 10:45:37

标签: php facebook facebook-graph-api

我已经提出了一个允许用户使用他们的Facebook帐户登录的应用程序。当被问及他们是否希望授权我的应用程序从他们的Facebook帐户访问某些详细信息时,一切正常。但是,当他们点击“拒绝”时,它只是保持循环并不断询问他们是否想要授予应用程序权限。当他们点击“拒绝”而不是连续循环并询问同样的问题时,如何让它转到另一个页面?

我已经尝试过查看文档,但似乎找不到我想要的内容。

在请求许可之前,执行以下操作,然后如果我点击“不允许”,它只是循环查看下面的代码,直到我点击“允许”:

<?php

session_start();

require("facebook.php");

$facebook = new Facebook(array(
    'appId'  => 'app id goes here',
    'secret' => 'secret goes here',
    'cookie' => true
));

$session = $facebook->getSession();

if(!empty($session)) {

    try{

        $uid = $facebook->getUser();
        $user = $facebook->api('/me');

        $_SESSION['returned'] = array("id" => $uid, "name" => $user["name"], "access_token" => $session['access_token']);

        header('Location: returned.php');
        exit;

    } catch (Exception $e) {

        echo "something is wrong";
        exit;

    }

} else {

    $login_url = $facebook->getLoginUrl();
    header("Location: ".$login_url);

}

1 个答案:

答案 0 :(得分:3)

根据api,它会将用户重定向到您提供的页面:http://YOUR_URL?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request

在您重定向的页面中,检查url参数“error” 除了成功之外,还应该有一个url参数“code”,你应该在继续

之前验证它
if (isset($_GET['error'])) {
  header('Location: URL_TO_GO_IF_FAILED');
} else {
  // ... whatever you were doing before
}