我使用“请求对话框”来创建Facebook请求。为了让用户发送请求,我需要使用图API访问Request对象。我已经尝试了大多数似乎合适的权限设置(read_requests和user_about_me)来获取请求对象,但我在响应中得到了错误。我使用了错误的权限吗?
我可以使用发送请求的帐户中的图API来访问请求对象。
http://developers.facebook.com/docs/reference/dialogs/requests/
返回数据 - 以逗号分隔的列表 已创建的request_ids。 了解发送请求的人员 到,你应该循环通过 每个请求对象的信息 由请求ID识别。
答案 0 :(得分:4)
我刚才问过自己这个问题:
如何检索我发送的所有请求?
答案: 你不能 !
您有两种选择:
request_id
,以便您以后访问它们并获取所需的数据上述证明,您可以查看friend_request
表。可索引字段是uid_to
字段!
答案 1 :(得分:1)
这是因为您需要知道iframe模式,因为您不再需要iframe模式
function sendRequest() {
FB.ui({
method: 'apprequests',
title: 'Invite friends to join you',
message: 'Come play with me.'
},
function (res) {
if (res && res.request_ids) {
var requests = res.request_ids.join(',');
$.post('FBRequest.ashx',
{ request_ids: requests },
function (resp) { });
}
});
return false;
}
答案 2 :(得分:0)
如果您想查找刚刚发送请求的人员的用户ID。那么这段代码就是你所需要的:
var request = {
message: msg,
method: 'apprequests',
title: 'Select some of your friends'
};
FB.ui(request, function (data) {
if (data && data.request_ids) {
// Get the uid of the person(s) who was/were invited
var uids = new Array();
FB.api("/?ids=" + data.request_ids.join(), function(data2) {
for (i = 0; i<data.request_ids.length; i++) {
uids[i] = data2[data.request_ids[i]]['to']['id'];
}
# do something with uids here
});
}
});
答案 3 :(得分:0)
不知道这是否有帮助,但这是我如何处理它。
使用Javascript:
function sendRequest() {
FB.ui({
display: 'iframe',
method: 'apprequests',
title: 'Invite friends to join you',
message: 'Come play with me.'
},
function (res) {
if (res && res.request_ids) {
var requests = res.request_ids.join(',');
$.post('FBRequest.ashx',
{ request_ids: requests },
function (resp) { });
}
});
return false;
}
服务器端(FBRequest.ashx):
// get operation and data
var ids = HttpContext.Current.Request["request_ids"];
// if we have data
if(ids != null) {
// make batch graph request for request details
var requestIds = ids.Split(',').Select(i => long.Parse(i)).ToList();
var fbApp = new FacebookWebClient([AppId],[AppSecret]);
dynamic parameters = new ExpandoObject();
parameters.ids = ids;
dynamic requests = fbApp.Get(parameters);
// cycle through graph results and do stuff
dynamic req = null;
for(int i=0;i<requestIds.Count;i++) {
try {
req = requests[requestIds[i].ToString()];
// do stuff with request, save to DB, etc.
} catch (Exception ex) {
// error in finding request, continue...
}
}
}
答案 4 :(得分:0)
您可以访问用户ID列表作为返回数据的一部分
FB.ui({
method: 'apprequest',
message: 'Use this thing',
}, function(result){
//a list of ids are in here
result.to;
});