2012-10-15 12 views
15

È possibile utilizzare l'integrazione Facebook integrata iOS 6 per ottenere le informazioni di base dell'utente (indirizzo email, data di nascita, ecc.)? Tutta la documentazione/gli esempi che ho visto utilizzano l'integrazione di iOS 6 per aprire semplicemente uno SLComposeViewController.Facebook iOS 6 - ottieni informazioni utente

Grazie per il vostro tempo.

risposta

31

Si prega di controllare il mio progetto di esempio. Ti permette di caricare video su Facebook, ma include anche un metodo per ottenere le tue informazioni, dovresti guardare il file ViewController.m, quello annotato "Nativo" nel controller della scheda.

https://bitbucket.org/danielphillips/fb-video-upload

Sarà necessario importare i quadri Social e Accounts a fare quello che vuoi. Si richiede l'accesso all'account Facebook degli utenti dal ACAccountStore, se si è concesso l'accesso, quindi si utilizza questo account per creare un SLRequest con i parametri desiderati, qui si desidera l'oggetto grafico "/ me".

Proprietà:

@property (nonatomic, retain) ACAccountStore *accountStore; 
@property (nonatomic, retain) ACAccount *facebookAccount; 

autenticazione:

- (IBAction)getMeButtonTapped:(id)sender { 
    if(!_accountStore) 
     _accountStore = [[ACAccountStore alloc] init]; 

    ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

    [_accountStore requestAccessToAccountsWithType:facebookTypeAccount 
              options:@{ACFacebookAppIdKey: @"483616868329082", ACFacebookPermissionsKey: @[@"email"]} 
             completion:^(BOOL granted, NSError *error) { 
              if(granted){ 
               NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount]; 
               _facebookAccount = [accounts lastObject]; 
               NSLog(@"Success"); 

               [self me]; 
              }else{ 
               // ouch 
               NSLog(@"Fail"); 
               NSLog(@"Error: %@", error); 
              } 
             }]; 
} 

Get "me":

- (void)me{ 
    NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"]; 

    SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook 
               requestMethod:SLRequestMethodGET 
                 URL:meurl 
               parameters:nil]; 

    merequest.account = _facebookAccount; 

    [merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
     NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

     NSLog(@"%@", meDataString); 

    }]; 

} 
+0

Ho usato il codice superiore il codice la prima volta funziona bene per me. Ma la prossima volta che ho scollegato l'account fb e poi di nuovo collegato, ricevo errori di sotto { error = { code = 190; message = "Il token di accesso è stato invalidato sul dispositivo."; type = OAuthException; }; } – NSCry

+0

@NSIllusion hai risolto il problema del token di accesso qui? – user717452

+1

@ user717452 Quasi risolto, ma non ho trovato nessuna risposta valida a mio avviso. Il mio problema è risolto reimpostando il contenuto e le impostazioni del simulatore. – NSCry

0

https://github.com/jonasman/JNFacebookDownload

self.facebookDownload = [JNFacebookDownload new]; 
self.facebookDownload.appID = @"380637545425915"; 

[self.facebookDownload downloadInformation:^(NSDictionary *userInfo, NSError *error) { 

    dispatch_async(dispatch_get_main_queue(), ^{ 

     if (error) 
     { 
      if (error.code == JNFacebookDownloadNoAccount) 
       NSLog(@"No account"); 
      else if (error.code == JNFacebookDownloadNoPermissions) 
       NSLog(@"No permissions"); 
      else if (error.code == JNFacebookDownloadNoAPPID) 
       NSLog(@"No APP ID Configured"); 
     } 
     else 
     { 
      self.textView.text = [userInfo description]; 
     } 
    }); 
Problemi correlati