Facebook取消了权限重定向

时间:2013-07-19 18:48:24

标签: php facebook facebook-graph-api

当用户拒绝应用的权限时,我遇到了一些麻烦。

当用户接受权限时,他们会被重定向到应用程序。当用户单击取消/拒绝时,它应该将它们重定向到主页面,但它会循环并要求它们再次接受权限。

我正在使用PHP API,以下是我的代码:

 // Development
  $app_id = 'XXXXXXXX';
  $app_secret = 'YYYYYYYYYY';

  $app_url = 'LINK_TO_FACEBOOK_PAGE_TAB';

  $cancelUrl = 'LINK_TO_FACEBOOK_PAGE';

  $GRAPH_URL = "https://graph.facebook.com/";

  $scope = 'publish_actions';

  // Init the Facebook SDK
   $facebook = new Facebook(array(
     'appId'  => $app_id,
     'secret' => $app_secret,
   ));

   // Get the current user
   $user = $facebook->getUser();

   // Get the users token
   $token = $facebook->getAccesstoken();




   // If the user has not installed the app, redirect them to the Login Dialog

     if(isset($_REQUEST['error']))
     {
         if(isset($_REQUEST['error_reason']) && $_REQUEST['error_reason']=='user_denied')
         {
        echo "<script>top.location.href='{$cancelUrl}'</script>";
         }
     }


   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
       'display' => 'page',
     ));

     print('<script> top.location.href=\'' . $loginUrl . '\'</script>');

   }

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你在这里这样做:

if (!$user) {

如果您不想重定向已拒绝该请求的用户,请检查Facebook用于告诉您用户拒绝该请求的错误参数的存在,并且不要将它们发送回auth对话框,如果你看到它们。

在最基本的层面上,如果登录对话框中的redirect_uri参数将用户带回您正在进行用户检查的同一页面,这应该可以正常运行并且易于测试:

if (!$user) {
  if ($_REQUEST['error_reason'] == 'user_denied') {
  //explain why you need them to log in
  } else {
    $loginUrl = $facebook->getLoginUrl(array( [...]
  }
}