示例:Bejeweled Blitz 经常举办活动和促销活动,点击后会将您带到他们的应用页面。到达那里后,该应用程序可以看到通过点击促销链接并分叉奖励到达了该页面。
这是怎么做到的?我需要做什么来实现类似的功能?据我所知,由于域不同(Facebook 与我的应用程序),父 URL 超出范围,那么消息是如何传递给应用程序的?
示例:Bejeweled Blitz 经常举办活动和促销活动,点击后会将您带到他们的应用页面。到达那里后,该应用程序可以看到通过点击促销链接并分叉奖励到达了该页面。
这是怎么做到的?我需要做什么来实现类似的功能?据我所知,由于域不同(Facebook 与我的应用程序),父 URL 超出范围,那么消息是如何传递给应用程序的?
每个应用程序(画布、页面选项卡)
您可以通过将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 文档)
这是通过用户单击的 URL 中传递的查询参数完成的。一个明显的例子是DoubleDownCasino共享一个 URL 供用户点击。链接是:
http://apps.facebook.com/doubledowncasino/?pid=PNNTDP&target_url=pid%3APNNTDP
DoubleDownCasino 可能会做的是,一旦他们的画布应用程序加载,他们会解析查询参数的 URL,并且pid
和target_url
参数有助于确定用户获得的“奖励”类型。一旦他们兑换了它,点击相同的 URL 将不会再次获得奖励,因为它可以检查用户是否已经使用给定的pid
和兑换了优惠target_url
。
你的问题:
示例:Bejeweled Blitz 经常举办活动和促销活动,点击后会将您带到他们的应用页面。到达那里后,该应用程序可以看到通过点击促销链接并分叉奖励到达了该页面。
我上面解释的正是 Bejweled Blitz 在这篇文章中的做法。如果您通过 bit.ly 短 URL,该 URL 是:
因此,为了回答您的问题,Bejeweled Blitz 通过附加查询参数(在本例中为 )来运行促销和奖励,zgift
然后他们可以通过获取用户正在点击的当前 URL 在他们的应用程序中解析这些参数。