【问题标题】:Passing custom parameters to facebook page tab将自定义参数传递给 facebook 页面选项卡
【发布时间】:2014-01-10 22:01:25
【问题描述】:
我有一个 facebook 应用程序,我想将它安装在多个页面上。我目前正在使用图形 API /<page_id>/tabs 在页面上发布应用程序。我希望根据安装应用程序的页面将一些自定义参数传递给应用程序。为此,我看到很少有 facebook 页面选项卡可以包含 facebook.com/<page_id>/?id=<page_id>&sk_app=<app_id>&app_data=<app_data> 之类的 URL 的文档。但是如何在将应用程序发布到页面时添加此 app_data 呢?我尝试将参数 app_data 作为 POST 数据的一部分传递给/<page_id>/tabs API。但是tab url还是没有app_data。
【问题讨论】:
标签:
facebook
facebook-graph-api
【解决方案1】:
app_data 参数适用于当您在页面上创建指向应用程序的链接并希望包含一些额外信息时 - 例如,如果您有一个应用程序,人们在其中绘制图片然后与他们的朋友分享,您可以给人们一个分享按钮,其中包括页面上应用程序的链接,并将 app_data 参数设置为他们的drawing_id,这样当他们的朋友点击链接时,您的应用程序就会加载他们的图片。它并不是真正适合您想要的。当有人在页面上直接访问您的应用时,它始终为空。
听起来您只需要检测您的应用当前显示在哪个页面上并基于此执行一些逻辑。
页面数据通过 signed_request 变量提供给您的应用程序,当请求应用程序时,Facebook 会向服务器发布该变量。 signed_request 的文档是here。您将需要使用您的应用程序密码对签名的请求进行解码。您可以在 PHP here 中找到执行此操作的代码(抱歉,您没有指定您正在开发的语言)。
signed_request 是一个类似于下面的 JSON 对象:
{
"algorithm":"HMAC-SHA256",
"issued_at":1389362066,
"page":{
"id":"189223131098036",
"liked":false,
"admin":true
},
"user":{
"country":"gb",
"locale":"en_GB",
"age":{
"min":21
}
}
}
要确定应用显示在哪个页面上,您只需查看 JSON 的 page 部分中返回的 id。