2012-10-04 114 views
1

也許它是一個棘手的問題,但無論如何:Facebook應用程序牆帖重定向

我有一個Facebook應用程序運行在外部服務器上。比方說,我的畫布網址是

http://mydomain.com/myapp/ 

這被整合到一個頁面,我可以像

http://facebook.com/mypage/app_123456789 

與URL纔會在應用中,其中123456789是我的應用程序ID

用戶可以共享某些東西在他們的牆上,並且該共享包含回到我的應用程序的url。

所以可以說我有共享的內容,它有一個像

http://mydomain.com/myapp/content/1 

這是用戶進入,如果他點擊了的牆後的URL。

現在我的問題顯然是我想要這個網址到得到重定向回到我的Facebook頁面。

是很容易的一切重定向到

http://facebook.com/mypage/app_123456789 

但帶我到我的應用程序的主頁面,用戶不能共享的具體內容。

有沒有辦法做到這一點?就像,我可以傳遞一個參數給臉譜來告訴我要加載哪個頁面?

+0

這是一個一次性的應用程序,還是需要重定向到幾個Facebook頁面? – logan

+0

嘿洛根,只有一個頁面,但應用程序本身有不同的網址與幾個內容,所以顯然用戶希望看到具體的共享的東西,他應該去那個特定的網址。這對於畫布應用程序和頁面應用程序來說是個問題。 – Opi

+0

使用畫布應用程序(但不是頁面應用程序/頁面選項卡),您可以使用路徑。即:'https:// apps.facebook.com/onthefarm/myotherpage /'或'https:// apps.facebook.com/onthefarm /'或'https://apps.facebook.com/onthefarm/mybest/page1 ' – logan

回答

1

是的,你可以!當Facebook重定向到應用程序的畫布頁面時,Facebook不會傳遞任何舊參數,但如果以某種方式操縱參數,則可以訪問它們。

你必須通過按以下格式所有的參數 - 一旦你達到你的畫布URL

https://apps.facebook.com/yourapp?app_data=key1$value1,key2$value2,... 

,您可以從signed_request內檢索app_data數據。一旦你有參數的內容,你應該有這樣的事情 -

key1$value1,key2$value2 

現在它只是解析該字符串成鍵和值的數組的問題。在這個特定的例子中,我選擇了一個dolar字符來將鍵與值分開,但是您可以從下面的代碼中看到,您可以使用任何想要將參數和鍵/值對分開的任何東西 -

// initialize parameter array 
$getParams = array(); 
$signedRequest = $facebook->getSignedRequest(); 
// separate each parameter 
$app_data = explode(",",$signedRequest['app_data']); 
foreach ($app_data as $param_key => $param_value) { 
    // separate each key/value pair 
    list($key,$value) = explode("$",$param_value); 
    $getParams[$key] = $value; 
} 

在這個階段,您$getParams陣列應該是這個樣子

Array(
    'key1'=>'value1', 
    'key2'=>'value2' 
) 

現在你可以傳遞參數給你的應用程序,你就可以決定什麼內容,根據傳遞給數據顯示它來自推薦網址。

+1

謝謝你Lix,這似乎是工作! :) – Opi

+0

非常歡迎您!樂於幫助! – Lix