0

示例:Bejeweled Blitz 经常举办活动和促销活动,点击后会将您带到他们的应用页面。到达那里后,该应用程序可以看到通过点击促销链接并分叉奖励到达了该页面。

这是怎么做到的?我需要做什么来实现类似的功能?据我所知,由于域不同(Facebook 与我的应用程序),父 URL 超出范围,那么消息是如何传递给应用程序的?

4

2 回答 2

1

每个应用程序(画布、页面选项卡)
您可以通过将app_data参数传递给链接到 Facebook 应用程序的任何 URL 来获取数据。这个参数值将被添加到signed_request.

因此,此 urlhttp://facebook.com/mypage/app_123?app_data=promotion12将允许您promotion12通过signed_request.

在 PHP 中,这会给你这样的东西:

$signed_request = $facebook->getSignedRequest();
$app_data = $signed_request['app_data'];

当然,你可以在那里传递任何字符串;例如,它可以是 JSON 字符串。

这确实是从应用程序外部到内部获取数据的核心。

希望这对您有所帮助!

Canvas
app 然而,在 Canvas 应用程序中,它要简单得多,每个查询参数都将传递给应用程序。

所以,http://apps.facebook.com/myapp?somedata=hey可以通过:

$data = $_GET['somedata'];

Facebook 只会将这些参数附加到 iframe URL。

文档
https://developers.facebook.com/docs/reference/login/signed-request/(很难找到,该死的 FB 文档)

于 2012-12-20T02:50:21.327 回答
1

这是通过用户单击的 URL 中传递的查询参数完成的。一个明显的例子是DoubleDownCasino共享一个 URL 供用户点击。链接是:

http://apps.facebook.com/doubledowncasino/?pid=PNNTDP&target_url=pid%3APNNTDP

DoubleDownCasino 可能会做的是,一旦他们的画布应用程序加载,他们会解析查询参数的 URL,并且pidtarget_url参数有助于确定用户获得的“奖励”类型。一旦他们兑换了它,点击相同的 URL 将不会再次获得奖励,因为它可以检查用户是否已经使用给定的pid和兑换了优惠target_url

你的问题:

示例:Bejeweled Blitz 经常举办活动和促销活动,点击后会将您带到他们的应用页面。到达那里后,该应用程序可以看到通过点击促销链接并分叉奖励到达了该页面。

我上面解释的正是 Bejweled Blitz 在这篇文章中的做法。如果您通过 bit.ly 短 URL,该 URL 是:

http://apps.facebook.com/bejeweledblitz/?zgift=0/eTtVUuhF5ipdJmO1jlDhr96MtKjp1NYflJrcOddB6iZDH1y96K%2Bml6gC0%2B5yVN

因此,为了回答您的问题,Bejeweled Blitz 通过附加查询参数(在本例中为 )来运行促销和奖励,zgift然后他们可以通过获取用户正在点击的当前 URL 在他们的应用程序中解析这些参数。

于 2012-12-20T02:51:45.353 回答