2012-10-15 36 views
15

Czy można skorzystać z wbudowanej integracji z systemem iOS 6 na Facebooku, aby uzyskać podstawowe informacje o użytkowniku (adres e-mail, datę urodzenia itp.)? Cała dokumentacja/przykłady, które widziałem, używają integracji iOS 6, aby po prostu otworzyć SLComposeViewController.Facebook iOS 6 - uzyskaj informacje o użytkowniku

Dziękuję za poświęcony czas.

Odpowiedz

31

Proszę sprawdzić mój przykładowy projekt. To pozwala przesłać wideo na Facebooka, ale zawiera również metodę uzyskania informacji, powinieneś spojrzeć na plik ViewController.m, ten zanotowany "Natywny" w kontrolce kart.

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

Trzeba będzie importować ram Social i Accounts robić, co chcesz. Żądasz dostępu do konta Facebook użytkownika z poziomu ACAccountStore, jeśli masz przyznany dostęp, to użyjesz tego konta, aby utworzyć SLRequest z żądanymi parametrami, tutaj chcesz obiekt graficzny "/ ja".

Właściwości:

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

Uwierzytelnij:

- (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 "ja":

- (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

Użyłem górnego kodu, pierwszy kod działa dobrze dla mnie. Ale następnym razem, gdy odłączyłem konto fb, a następnie ponownie połączono, wtedy błąd poniżej { error = { code = 190; message = "Znacznik dostępu został unieważniony na urządzeniu."; type = OAuthException; }; } – NSCry

+0

@NSIllusion rozwiązałeś problem dostępu do tokena tutaj? – user717452

+1

@ user717452 Prawie rozwiązany, ale nie znalazłem żadnej dobrej odpowiedzi, która wyglądałaby na przewodnika. Mój problem został rozwiązany poprzez zresetowanie zawartości i ustawień symulatora. – 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]; 
     } 
    }); 
Powiązane problemy