我希望使用JS SDK在我的画布页面中获取发件人的ID。
我已编写此代码,但它不起作用:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
<head>
</head>
<body>
<div id="fb-root"></div>
<script>
console.log("one");
window.fbAsyncInit = function() {
FB.init({
appId : 'myAppId', // App ID
status: true,
cookie: true,
xfbml: true,
oauth: true});
console.log("two");
FB.api("/me/apprequests", function(response) {
console.log("1");
if (response.data && response.data.length > 0) {
console.log("2");
for (var i = 0; i < response.data.length; i++) {
console.log("3");
if (response.data[i].from) {
console.log("Sender: " + response.data[i].from);
}
else {
console.log("App request and not a user request, unknown sender");
}
}
}
});
};
console.log("three");
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
</body>
</html>
为什么?
答案 0 :(得分:2)
如果你想获得所有请求,那么你应该查询/me/apprequests,这将获得一个json数组,其中包含应用程序待处理的所有应用程序请求。 然后,您可以迭代它们并获取发件人ID。
但是,如果您只想要一个请求,那么您应该查询/REQUEST_ID
。
例如,假设请求的ID为xxxx_yyyy
(其中xxx是请求ID,yyyy是您的用户ID),那么您需要:https://graph.facebook.com/REQUEST_ID
。
好吧,如果你想迭代所有请求,然后要求所有请求开始,然后迭代它,而不是每个请求发出一个http请求。 此外,事实证明,请求中的“表单”字段仅适用于“用户生成的请求”,而不适用于“应用程序生成的请求”。
试试这段代码:
FB.api("/me/apprequests", function(response) {
if (response.data && response.data.length > 0) {
for (var i = 0; i < response.data.length; i++) {
if (response.data[i].from) {
console.log("Sender: " + response.data[i].from);
}
else {
console.log("App request and not a user request, unknown sender");
}
}
}
});