将自定义参数传递到Facebook页面选项卡

时间:2014-01-10 05:50:14

标签: facebook facebook-graph-api

我有一个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。

1 个答案:

答案 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