用户已发送应用请求(使用原生fb.ui:apprequest)。当他的朋友打开通知(“xxx邀请你到APP”)时,URL看起来像这样:
https://apps.facebook.com/app_name/?fb_source=notification&
request_ids=THE_REQUEST_ID&ref=notif&app_request_type=user_to_user&
notif_t=app_request
在此页面上,我的网页显示在iframe中。
以前,我只需在我的网页上(在iframe内)拨打$_GET['request_ids']
即可获取request_id (为什么?因为我需要跟踪发送邀请的人)。
然而,这不再适用。我几乎尝试了一切。
根据facebook文档,我之前使用的解决方案是正确的。看到: https://developers.facebook.com/docs/games/requests#deleting (向下滚动一下,到PHP示例)
Facebook是否删除了此功能?那会很难过,我想/希望不会!
人们有类似的问题(所有人都提出了解决方案,不再有效):
真的唯一的解决办法是通过邀请者user_id吗? (如Retrieve User ID of Facebook App Invitor中所述)。如果是这样,当用户点击通知时,我可以检索它吗?
编辑:
我也试过使用:exit(print_r($facebook->getSignedRequest(), TRUE));
- 输出:
algorithm => HMAC-SHA256
issued_at => 1395696960
user =>
country => dk
locale => da_DK
age =>
min => 21
user_id => the_user_id (ONLY WHEN APP HAS ALREADY BEEN AUTHED IT SEEMS)
关闭,但没有雪茄。
答案 0 :(得分:0)
我一直在寻找一个解决方案已经有一段时间了,我能得到的最好的方法是对/me/apprequests
进行API调用 - 它将返回应用程序的所有请求。< / p>
我知道你仍然无法弄清楚你曾经点过哪一个(如果你收到了多个邀请),但它要先行一步,直到FB对其事情进行排序......
简单JS示例:
FB.api('/me/apprequests', function(r){
if (r && r.data) {
for (var i = 0; i < r.data.length; i++) {
var id = r.data[i].id.split('_')[0]; // this is the request id
console.log(id, r.data[i]);
};
}
})
答案 1 :(得分:0)
我最近遇到了同样的问题。但问题不在facebook方面。它实际上是我们的Nginx服务器上的配置问题。
我们在根页面上设置了重定向,它删除了facebook传递给画布应用程序的所有cgi参数。修复Nginx配置后,一切都按预期工作。