我有一个Facebook应用程序,我想在多个页面上安装。我目前正在使用图形API /<page_id>/tabs
在页面上发布应用程序。我希望将一些自定义参数传递给应用程序,具体取决于安装该应用程序的页面。为此,我看到几个文档,其中facebook页面选项卡可以包含facebook.com/<page_id>/?id=<page_id>&sk_app=<app_id>&app_data=<app_data>
等网址。但是如何在将应用发布到页面时添加此app_data?我尝试将参数app_data作为POST数据的一部分传递给/<page_id>/tabs
API。但是标签网址仍然没有app_data。
答案 0 :(得分:4)
app_data
参数适用于在页面上创建指向应用程序的链接,并且您想要包含一些额外信息时 - 例如,如果您有一个应用程序供人们绘制图片然后与他们的朋友分享,您可以为人们提供一个“共享”按钮,其中包含指向页面上app的链接,app_data参数设置为其drawing_id,以便当他们的朋友点击链接时,您的应用会加载他们的照片。它并不是真正用于你想要的东西;当有人直接访问您网页上的应用时,它将始终为空。
听起来您只需要检测当前正在显示的应用程序页面,并根据该页面执行某些逻辑。
页面数据通过signed_request变量提供给您的应用程序,当应用程序被请求时,Facebook会向服务器发送POST。 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的id
部分中返回的page
。