2011-02-14 71 views
1

我寫了Facebook,是爲了通過頁面選項卡中顯示自己的公司網頁上的應用程序。我需要與查看用戶交互,因此我需要擴展權限。的Facebook的iFrame應用重定向

我已經按照建議的程序,但現在已經碰了壁。我的應用程序位於iFrame中,擴展權限請求使用重定向。我可以得到需要確認授權的頁面,但是當您點擊允許時,Facebook會重定向到託管應用程序的頁面,而不是返回到我的Facebook頁面選項卡。一旦適當的權利得到授權,其他應用程序就可以正常工作,所以我知道這只是一個重定向問題,但我覺得我已經嘗試了一切,而不是很多人似乎都遇到了同樣的問題。如果有人能指出我正確的方向,我很樂意。

謝謝!

這裏是我的代碼:

$app_id = "myappid"; 

$canvas_page = "http://wheremyappishosted/"; 

$signed_request = $_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

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

$user_id = $data["user_id"]; 
$access_token = $data['oauth_token']; 

if (empty($data["user_id"])) { 
$auth_url = "https://graph.facebook.com/oauth/authorize?client_id=".$app_id."&redirect_uri=".urlencode($canvas_page)."&scope=user_photos,friends_photos,publish_stream,user_likes"; 
die("<script> top.location.href='" . $auth_url . "'</script>"); 
} 

$f = json_decode(file_get_contents("https://graph.facebook.com/".$user_id."?access_token=".$access_token."&fields=name,albums,likes"), true); 

回答

0

請設置重定向變量設置爲目標頁面:

$redirect = "http://foo.com"; 
+0

我剛剛編輯我的代碼,$重定向應該已經$ canvas_page代替。 – sebotron 2011-02-14 16:06:08

+0

它現在在工作嗎? – Hamza 2011-02-14 16:08:34

4

對於那些有興趣,我相信我已經找到一種方法來規避這一點。我沒有將用戶重定向迴應用程序,而是將它們重定向到一個小腳本,然後將其重定向回頁面選項卡。由於該應用程序已被授權,所有內容都可以正常運行,並且signed_request會與用戶信息一起傳遞。我不知道這是否真的是合法的方式,但它的工作原理。

0

集REDIRECT_URI到的 「http [秒]://apps.facebook.com/YOUR_APP/」 而不是 「HTTP [S]://apps.facebook.com/YOUR_APP」。注意尾部斜線!