2012-05-17 11 views
14

Nel mio app iOS, ottengo un token di accesso utilizzando il seguente codice:Come tutti i miei eventi via Facebook iOS SDK

[self.facebook authorize:[NSArray arrayWithObjects:@"user_events", 
@"friends_events", nil]]; 

Ho poi richiedere i miei eventi con il seguente codice:

[self.facebook requestWithGraphPath:@"me/events" andDelegate:friendsVC]; 

Ma come risposta, ottengo solo eventi a cui ho risposto RSVP. Mi piacerebbe avere tutti i miei eventi compresi quelli a cui non ho risposto.

Qualche idea?

risposta

2

È possibile ottenere l'elenco degli eventi indipendentemente dal loro status RSVP con query successiva FQL:

SELECT eid, name, venue, location, start_time FROM event WHERE eid IN (
    SELECT eid from event_member WHERE uid = me() 
) 

Questo non tornerà stato RSVP per ogni evento, ma solo eventi particolari. È possibile utilizzare Batch Requests per ottenere entrambi i dettagli degli eventi e rsvp_status con la stessa query.

https://graph.facebook.com/?method=post&batch=[ 
    { 
    "name":"rsvp", 
    "relative_url":"fql?q=SELECT+eid,rsvp_status+FROM+event_member+WHERE+uid=me()", 
    "omit_response_on_success":false 
    }, 
    { 
    "relative_url":"?ids={result=rsvp:$.data.*.eid}" 
    } 
] 

Vedi event e event_member documentazione tabella per i dettagli su altri campi si potrebbe desiderare di recuperare.

Note:

partire 5 luglio, un token di accesso sarà richiesto di accedere agli eventi, anche pubblici.

6

La richiesta

/ME/eventi

ti dà solo gli eventi che un utente è (forse) la pianificazione a partecipare. La risposta non include eventi a cui l'utente è stato invitato (ma non ha risposto) o rifiutato.

Ci sono altre richieste che possono essere di aiuto:

È possibile controllare se un utente è stato invitato ad un evento in questo modo:

/EVENT_ID/invitato/USER_ID

stato RSVP può essere controllato evento:

/EVENT_ID/frequentare

/EVENT_ID/forse

/EVENT_ID/rifiutato

/EVENT_ID/invitati

dove ogni richiesta restituisce un elenco di utenti con lo stato RSVP interrogato.

+0

In realtà, gli eventi a cui ho risposto con "Forse" sono inclusi nella risposta a una richiesta 'me/eventi'. – sentinel

+0

Attenzione alla connessione 'eventi' * per impostazione predefinita nelle ultime due settimane * (utilizzare i parametri' since'/'until' per specificare l'intervallo di tempo desiderato). –

0

Penso che potresti ottenere events da query fql. Devi provare questo.

Vedere anche questo How-To: Use the Graph API to Manage Events.

Sarà necessario HTTP GET quanto segue dalla Graph API:

fql?q=SELECT uid,eid,rsvp_status FROM event_member WHERE uid = me()

È possibile recuperare tutti gli stati di quella chiamata.

{ 
    "data": [ 
    { 
     "uid": "723020003", 
     "eid": "19935786340002", 
     "rsvp_status": "not_replied" 
    }, 
    { 
     "uid": "723020003", 
     "eid": "234524000290351", 
     "rsvp_status": "attending" 
    }, 
    { 
     "uid": "723020003", 
     "eid": "210091000081240", 
     "rsvp_status": "declined" 
    }, 
    { 
     "uid": "723020003", 
     "eid": "210091000341240", 
     "rsvp_status": "unsure" 
    } 
    ] 
} 
0

Questa non è una soluzione completa, e questo non può funzionare, ma vedere se è possibile ottenere l'accesso al feed iCal di eventi di Facebook di un utente. Mi iscrivo al mio feed iCal e ho notato che tutti gli eventi, anche quelli nuovi che devo ancora inviare a RSVP sono inclusi nel feed.

Qualcosa da provare comunque!

0

Utilizzare /ME/eventi per ottenere gli eventi che l'utente ha risposto alle e /ME/eventi/not_replied per gli altri.

Per esempio (supponendo di aver creato una sessione):

[FBRequestConnection startWithGraphPath:@"/me/events/not_replied" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{ 
    FBGraphObject* data = (FBGraphObject*)result; 
    NSMutableArray* array = [data objectForKey:@"data"]; 

    //parse data etc.. 
}]; 

Vedi https://developers.facebook.com/docs/graph-api/reference/v2.0/user/events/ per maggiori informazioni.