Facebook页面标签应用程序signed_request app_data缺失

时间:2014-06-19 14:13:25

标签: javascript facebook

我正在开发一个Facebook 页面标签应用程序 - 使用Javascript SDK - 在加载时,应该显示Facebook发布到我的应用程序的signed_request的内容。此signed_request应包含“app_data”参数,该参数在URL中传递,如下所示:

HTTP _ // www.facebook.com/pages/MyPage-Community/SOME_ID?sk=MY_APP_ID&app_data=this_is_my_data

链接:

  • MyPage-Community是一个临时粉丝页面,已发布
  • 我猜,SOME_ID是页面ID
  • MY_APP_ID包含Facebook提供的应用ID
  • app_data = this_is_my_data(我需要的)

注意:

  • 应用程序本身不处于开发模式,因此公开可用
  • 我正在使用 localhost 来测试应用
  • 我已经使用开发者帐户AND测试了一个真实的普通帐户(设置为App Tester,因此获得授权)

现在,在应用程序代码(javascript)中,我正在调用 FB.getLoginStatus(...),它为我提供了authResponse对象,其中包含 signedRequest 属性 - 这个在解码时向我显示这些键/值对:

[algorithm] => HMAC-SHA256

[code] => SOME_CODED_STRING

[issued_at] => 1403183583

[user_id] => XXXXXXXXXXXXXXX(我的用户ID)

正如您所看到的, app_data 属性不应该存在 - 因为页面也应该存在,但我并不需要那个。任何想法为什么会这样?在任何地方找不到答案。可能是因为我正在使用localhost吗?其他一切似乎都有效(虽然当我尝试在应用程序中“喜欢”页面时,我确实收到了错误。)

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您混淆了已发布到您应用的已签名请求以及对JS SDK signedRequest方法的响应的getLoginStatus参数 - 他们不是同一个东西,但是因为他们有类似的目的而被命名为

JS SDK返回的值或多或少等同于您在Facebook画布应用程序上获得的值,但它不是相同的数据源或交付机制,并且不会拥有相同的字段

要使用pageapp_data阅读实际签名的请求,您需要在服务器端执行此操作 - 其中的说明位于:https://developers.facebook.com/docs/facebook-login/using-login-with-games#checklogin(它适用于页面标签应用以及画布app)