6 Stimmen

FaceBook API: Abrufen des Anfrageobjekts für eine Anfrage-Id - angemeldet bei dem Konto, das die Anfrage gesendet hat. Verwendung der "Requests Dialog" API

Ich verwende den "Anfragen-Dialog", um Facebook-Anfragen zu erstellen. Um den Benutzer, an den die Anfragen gesendet wurden, zu ermitteln, muss ich über die Graph-API auf das Request-Objekt zugreifen. Ich habe die meisten Berechtigungseinstellungen ausprobiert, die mir geeignet erschienen (read_requests und user_about_me), um das Request-Objekt zu erhalten, aber stattdessen erhalte ich ein false in der Antwort. Verwende ich die falschen Berechtigungen?

Ich kann auf das Anforderungsobjekt über die Grafik-API von dem Konto aus zugreifen, an das die Anforderung gesendet wurde.

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

Rückgabedaten - Eine kommagetrennte Liste der request_ids, die erstellt wurden. Um zu erfahren, an wen die Anfragen gesendet wurden gesendet wurden, sollten Sie eine Schleife durch die Informationen für jedes Anfrageobjekt das durch eine request_id identifiziert wird.

4voto

ifaour Punkte 37886

Ich habe mir diese Frage schon vor einiger Zeit gestellt:
Wie kann man alle gesendeten Anfragen abrufen? von mir ?

Die Antwort: Sie können nicht !
Sie haben zwei Möglichkeiten:

  1. Speichern Sie die request_id die zurückgegeben wurden, als der Benutzer die Anfrage abgeschickt hat, so dass Sie später auf sie zugreifen und die benötigten Daten abrufen können
  2. Den Empfänger kennen!

Den Beweis für die obigen Ausführungen können Sie auf der friend_request Tisch. Das indizierbare Feld ist das uid_to Feld!

1voto

Dies ist, wenn Sie es in wissen Iframe-Modus wollen, wie Sie nicht brauchen Iframe-Modus mehr

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;
    }

0voto

dan-klasson Punkte 12870

Wenn Sie die Benutzerkennungen der Personen herausfinden möchten, an die Sie gerade eine Anfrage gesendet haben. Dann ist dieser Code genau das Richtige für Sie:

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
        });
    }
});

0voto

dcpar Punkte 273

Ich weiß nicht, ob das hilft, aber ich gehe folgendermaßen vor.

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;
    }

Server-Seite (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...
                }
            }
        }

0voto

athosghost Punkte 1

Sie können auf die Liste der Benutzerkennungen als Teil der Rückgabedaten zugreifen

FB.ui({
  method: 'apprequest',
  message: 'Use this thing',
}, function(result){
      //a list of ids are in here
      result.to;
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X