0

我有一個Facebook頁面,我已經添加了我的應用程序的選項卡。我用它來檢查用戶身份驗證或不使用下面的代碼: -認證後重定向到Facebook頁面標籤

<?php 
    $app_id = "MY APP ID"; 

    $canvas_page = "MY CANVAS PAGE"; 

    $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page); 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (empty($data["user_id"])) { 
      echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
      echo("<script> location.href='index.php'</script>"); 
    } 
?> 

現在,作爲CANVAS PAGE具有相同CANVAS PAGE我已經在應用程序改變,在頁面登錄重定向到https://apps.facebook.com/myappname/後,但我希望它重定向到我的Facebook頁面標籤;到這一個 - https://www.facebook.com/myfbpage/app_82136128736123

回答

2

你是對的。 redirect_uri必須是由應用程序「擁有」的URL。這意味着它已列在應用程序設置中。

您的畫布頁必須使用JavaScript重定向(就像您使用的那個)。唯一的區別是你需要記住你的應用程序在iframe中運行。您必須更改頂部的位置屬性,而不是文檔。頂部引用頁面最頂部的框架,這是應用程序執行正確重定向的唯一方法。

echo "<script language=javascript>"; 
echo "top.location.href ='".$page_url."';"; 
echo "</script>"; 
exit(); 

這是醜陋的,許多人拒絕相信這是做到這一點的正確方法,但我還沒有找到替代方案。