我正在开发一个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
链接:
注意:
现在,在应用程序代码(javascript)中,我正在调用 FB.getLoginStatus(...),它为我提供了authResponse对象,其中包含 signedRequest 属性 - 这个在解码时向我显示这些键/值对:
[algorithm] => HMAC-SHA256
[code] => SOME_CODED_STRING
[issued_at] => 1403183583
[user_id] => XXXXXXXXXXXXXXX(我的用户ID)
正如您所看到的, app_data 属性不应该存在 - 因为页面也应该存在,但我并不需要那个。任何想法为什么会这样?在任何地方找不到答案。可能是因为我正在使用localhost吗?其他一切似乎都有效(虽然当我尝试在应用程序中“喜欢”页面时,我确实收到了错误。)
谢谢!
答案 0 :(得分:1)
我认为您混淆了已发布到您应用的已签名请求以及对JS SDK signedRequest
方法的响应的getLoginStatus
参数 - 他们不是同一个东西,但是因为他们有类似的目的而被命名为
JS SDK返回的值或多或少等同于您在Facebook画布应用程序上获得的值,但它不是相同的数据源或交付机制,并且不会拥有相同的字段
要使用page
和app_data
阅读实际签名的请求,您需要在服务器端执行此操作 - 其中的说明位于:https://developers.facebook.com/docs/facebook-login/using-login-with-games#checklogin
(它适用于页面标签应用以及画布app)