2012-11-01 11 views
5

Sto cercando di recuperare i dati di compleanno degli amici di Facebook, ma restituisce null. Sto usando questo codice:iOS Facebook SDK 3.1 Recupera il compleanno di un amico restituendo un valore nullo

FBRequest* friendsRequest = [FBRequest requestForMyFriends]; 
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection, 
            NSDictionary* result, 
            NSError *error) { 
    NSArray* friends = [result objectForKey:@"data"]; 
    NSLog(@"Found: %i friends", friends.count); 
    for (NSDictionary<FBGraphUser>* friend in friends) { 
     NSLog(@"I have a friend named %@ - birthday %@", friend.name, friend.birthday); 
    } 
}]; 

Nome Amico è ok, ma amico di compleanno o di tutti i dati che non è uno dei dati di basi amici sta tornando nullo. Nota sto già aggiunto i permessi user_birthday e friends_birthday nella pagina di App facebook.com e nel metodo openSession (login):

- (void)openSession 
{ 

    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"user_birthday", 
          @"friends_birthday", 
          nil]; 


    [FBSession openActiveSessionWithReadPermissions:permissions 
             allowLoginUI:YES 
            completionHandler: 
    ^(FBSession *session, 
     FBSessionState state, NSError *error) { 
     [self sessionStateChanged:session state:state error:error]; 
    }]; 
} 

Avendo bisogno di un certo aiuto qui, ho già provato di tutto.

risposta

35

Ho lo stesso problema e ho risolto in questo modo.

  • Prima di tutto, assicurarsi di disporre delle autorizzazioni corrette.

    NSArray *permissions = @[@"user_birthday", @"friends_hometown", 
             @"friends_birthday", @"friends_location"]; 
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler: ..... 
    
  • Quindi, NON UTILIZZARE requestForMyFriends. Provo in diversi modi (Cambiando il FBRequest e questo tipo di cose

  • controllare le autorizzazioni ed essere sicuri che fosse i permessi necessari.

    NSLog(@"permissions::%@",FBSession.activeSession.permissions); 
    
  • Ora generare il FBRequest in questo modo.

    FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"]; 
    [ friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
        NSArray *data = [result objectForKey:@"data"]; 
        for (FBGraphObject<FBGraphUser> *friend in data) { 
         NSLog(@"%@:%@", [friend name],[friend birthday]); 
    }}]; 
    

ho finalmente ottenere questi dati. Spero che ti aiuta

+0

@ jgorozco- grazie un tono. Hai risolto il mio grandissimo problema. – stack

+0

ecco un problema durante scrivere il codice seguente [openActiveSessionWithReadPermissions FBSession: permessi allowLoginUI: SI completionHandler: ..... Il problema è che il metodo "loginViewFetchedUserInfo" continuamente chiamato .. così ho rimuovere il codice e app funziona bene – g212gs

+0

Ora sto usando iOS Facebook SDK 3.2 e non riesco a ottenere la lista amici. Posso invitare amici così come posso ottenere amici che usano la stessa app, ma non posso ottenere la mia lista di tutti gli amici. C'è qualche cambiamento dal lato facebook? – UserDev

2

Nella v2.0 dell'API Graph, non è possibile ottenere i compleanni degli amici di una persona: l'autorizzazione friends_birthday è stata dichiarata obsoleta.

Per saperne di più su queste modifiche qui: https://developers.facebook.com/docs/apps/changelog

Problemi correlati