FaceBook API:获取请求ID的请求对象 - 登录到发送请求的帐户。使用“请求对话框”API

时间:2011-02-26 18:15:10

标签: facebook facebook-graph-api facebook-c#-sdk

我使用“请求对话框”来创建Facebook请求。为了让用户发送请求,我需要使用图API访问Request对象。我已经尝试了大多数似乎合适的权限设置(read_requests和user_about_me)来获取请求对象,但我在响应中得到了错误。我使用了错误的权限吗?

我可以使用发送请求的帐户中的图API来访问请求对象。

http://developers.facebook.com/docs/reference/dialogs/requests/

  

返回数据 - 以逗号分隔的列表   已创建的request_ids。   了解发送请求的人员   到,你应该循环通过   每个请求对象的信息   由请求ID识别。

5 个答案:

答案 0 :(得分:4)

我刚才问过自己这个问题:
如何检索我发送的所有请求

答案: 你不能
您有两种选择:

  1. 存储用户发送请求时返回的request_id,以便您以后访问它们并获取所需的数据
  2. 了解接收器!
  3. 上述证明,您可以查看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;
});