1

也许这是一个棘手的问题,但无论如何:

我有一个在外部服务器上运行的 facebook 应用程序。可以说我的画布网址是

http://mydomain.com/myapp/

这被集成到一个页面中,我可以使用类似的 url 访问该应用程序

http://facebook.com/mypage/app_123456789

其中 123456789 是我的应用程序 ID

用户可以在他们的墙上分享某些东西,并且该分享包含返回我的应用程序的 url。

所以可以说我有一个共享的内容,它有一个像

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

如果他点击墙上的帖子,这就是用户去的地方。

现在我的问题显然是我希望这个 url被重定向回我的 facebook 页面。

很容易将所有内容重定向到

http://facebook.com/mypage/app_123456789

但这会将我带到我的应用程序的主页,而不是用户共享的特定内容。

有没有办法做到这一点?就像,我可以将参数传递给 facebook 来告诉我要加载哪个页面?

4

1 回答 1

1

是的你可以!当被重定向到应用程序的画布页面时,Facebook 不会传递您提供的任何旧参数,但如果您以某种方式操作参数,您将获得对它们的访问权限。

您必须按以下格式传递所有参数 -

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

到达画布 URL 后,您可以app_datasigned_request. 一旦你有了参数的内容,你应该有这样的东西 -

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'
)

现在您可以将参数传递给您的应用程序,您将能够根据从引用 URL 传递给它的数据来决定要显示哪些内容。

于 2012-10-05T00:04:59.847 回答