2012-04-13 2 views
0

Ich habe eine Aktion erstellt, die auch ein Objekt veröffentlicht. Ich habe publish_actions Berechtigungen aktiviert. kann ich meine Liste von Aktionen via bekommen: https://graph.facebook.com/me/myApp:myActionWarum funktioniert https://graph.facebook.com/me/friends/myApp:myAction nicht?

aber ich kann nicht bekommen: https://graph.facebook.com/me/friends/myApp:myAction

Oder muß es nur direkt eine Liste von Objekten bekommen und mich irgendwie herausfiltern? Ich kann tatsächlich nicht herausfinden, wie man die Objektliste erhält, ohne sie durch die zugehörige Aktion aufzurufen. Ist das genau so?

Abhilfe: Zuerst habe ich fql.query "wählen uid, name, is_app_user von Benutzer wo uid in (UID2 von Freund wählen, wo UID1 me =()) und is_app_user = 1" und Freunde zurück, die die App haben

for (NSDictionary *d in friendsWithApp) { 
NSString *jsonRequest = [NSString stringWithFormat:@"{ \"method\": \"GET\", \"relative_url\": \"%@/myApp:myAction/myObject\" }", [d objectForKey:@"uid"]]; 
    jsonRequestsArray = [jsonRequestsArray stringByAppendingString:jsonRequest]; 

    setCount++; 
    if (setCount!=[presets count]) { 
     jsonRequestsArray = [jsonRequestsArray stringByAppendingString:@", "]; 
    } 
} 
jsonRequestsArray = [jsonRequestsArray stringByAppendingString:@" ]"]; 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:jsonRequestsArray forKey:@"batch"]; 
[facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self]; 

Ugh: die folgenden installiert ...

Zweitens bekommen ich diese Abfrage zurück und es zu Charge verwendet werden. Ich habe auch eine brauchbare Liste mit dieser fql.query:

"SELECT post_id, actor_id, attribution FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid = me() UND type = 'newsfeed') UND app_id = MY_APP_ID "

Aber es gibt nicht viele Einzelteile zurück, da es mit den letzten 50 Nachrichten konkurriert. Vielleicht ist es der Weg zu gehen, wenn die App genug verwendet wird, aber es scheint, als würde die Verwendung fallen und dann konnte man nicht leicht auf die älteren Posts kommen.

Antwort

1

In der Dokumentation für Permissions Sie eindeutig zwei zusätzliche Berechtigungen mit Ausnahme der "publish_actions" sehen kann, die Sie bereits haben:

user_actions: APP_NAMESPACE

und

friends_actions : APP_NAMESPACE

und es heißt:

Hier können Sie die Aktionen, die von einer anderen Anwendung als angegeben von der App-Namespace veröffentlicht abzurufen. Um beispielsweise die Funktion anzufordern, die von einer App veröffentlicht wird, die den Namespace greasapp enthält, fordern Sie den Benutzer für die user_actions an: awesomeapp und/oder friends_actions: awesomeapp-Berechtigungen.

+0

Dies scheint mir Zugriff auf alle installierten Anwendungen zu ermöglichen, aber hilft mir nicht zu wissen, was ich anrufen soll, um "friends_actions" in meiner eigenen App zu lesen. Irgendwelche Vorschläge? – dderuntz

+0

Nachdem Sie die friends_actions: APP_NAMESPACE-Berechtigung erhalten haben, sollten sie über/USER_ID_OF_FRIEND/APP_NAMSPACE zugänglich sein: ACTION_NAME – Igy

+0

das funktioniert. Ich versuche eine Liste meiner benutzerdefinierten Aktionen zu erhalten, die von Freunden ausgeführt werden. Ich bin mir nicht sicher, was Best Practice ist oder ob es nicht einfach ist. Ich möchte vermeiden, über meine Freunde zu iterieren. – dderuntz