2012-10-04 211 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