2012-03-29 55 views
1

我刚刚创建了一个Facebook应用程序,这是我第一次尝试,而作为说明我在这个奇怪的情况stucked完成一切:无法重定向程序返回到其Facebook页面标签

当用户允许认证通过后应用程序会将我的浏览器重定向到Facebook以外的浏览器,并将其重定向到托管我网站的网站页面,而不是重定向仅留在页面选项卡中的iframe。

这可能是因为在$redirect_uri我给其中的应用程序托管的网站的地址,但是当我尝试将$redirect_uri改变应用程序的页面标签地址的Facebook给这个错误:

An error occurred. Please try again later.

<?php 
    include ('src/facebook.php'); 
    $app_id = "160323532538730"; 
    $app_secret = "****************"; 
    $redirect_uri = "https://myhostingpage.com/landing.php"; 
    //$redirect_uri = "http://www.facebook.com/Mypage/app_160323532538730"; 

    $config = array(); 
    $config["appId"] = $app_id; 
    $config["secret"] = $app_secret; 
    $config["fileUpload"] = true; 
    // optional 

    $facebook = new Facebook($config); 
    $user = $facebook -> getUser(); 

    if ($user) { 
     $logoutUrl = $facebook -> getLogoutUrl(); 
     $user_profile = $facebook -> api('/me'); 
     $signed_request = $facebook -> getSignedRequest(); 

     list($encoded_sig, $payload) = explode('.', $_REQUEST["signed_request"], 2); 
     $signed_request = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

     $access_token = null; 
     if (!empty($_SESSION['access_token'])) { 
      $access_token = $_SESSION['access_token']; 
     } else if (!empty($signed_request['oauth_token'])) { 
      $access_token = $signed_request['oauth_token']; 
     } 

     if ($access_token != null) { 
      $id = $signed_request["user_id"]; 
      $authorized_code = $_GET["code"]; 
      $oauth_token = $signed_request["oauth_token"]; 
      $like_status = $signed_request["page"]["liked"]; 
      if ($like_status) { 
       echo "hello"; 
      } else { 
       echo "Like this page"; 
      } 
     } else if (!empty($_GET["error"])) { 
      echo "user hasn't authorized your app"; 
     } else if (!empty($_GET["code"])) { 
      $authorized_code = $_GET["code"]; 
      $authenticate_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . $redirect_uri . "&client_secret=" . $app_secret . "&code=" . $authorized_code . ""; 
      $access_token = $facebook -> getAccessToken(); 
      $_SESSION['access_token'] = $access_token; 
      header('Location: http://www.facebook.com/Mypage/app_160323532538730'); 
     } 
    } else { 
     $loginUrl = $facebook -> getLoginUrl(array('scope' => 'publish_stream email user_photos', 'redirect_uri' => $redirect_uri)); 
     echo("<script>top.location.href='" . $loginUrl . "' </script>"); 
    } 
    ?> 
+0

我不是用facebook api工作超过1年,很多事情因此而改变。但我认为它关于画布网址问题,请检查您的应用程序配置canvas_url是否与位于主机 – safarov 2012-03-29 21:09:38

回答

-1

试试这个。

$redirect_uri必须是你的Facebook页面的网址,
在Facebook的应用程序配置页面标签网址场必须是你主机路径。

M.

+0

上的文件匹配,但是当我尝试将'$ redirect_uri'更改为应用程序的页面选项卡地址时,facebook会给出此错误: '发生错误。请稍后再试。“ 该怎么办? – Maven 2012-03-30 07:38:31

+0

也尝试将** Web应用程序**画布网址设置为您的主机 – jkkso 2012-04-02 09:39:31

相关问题