2012-03-29 91 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