2012-10-15 20 views
15

Kullanıcının temel bilgilerini (e-posta adresi, doğum günü, vb.) Almak için yerleşik iOS 6 Facebook entegrasyonunu kullanmak mümkün mü? Gördüğüm tüm belgeler/örnekler, bir SLComposeViewController'u açmak için iOS 6 entegrasyonunu kullanmaktadır.Facebook iOS 6 - kullanıcı bilgisini al

Zaman ayırdığınız için teşekkür ederiz.

cevap

31

Lütfen örnek projemi kontrol edin. Facebook'a video yüklemenize izin verir, ancak aynı zamanda bilgi almak için bir yöntem içerir, sekme denetleyicisinde "Yerel" yazan not ViewController.m dosyasına bakmanız gerekir.

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

Ne istediğini yapmak Social ve Accounts çerçeveler ithal etmek gerekecektir. Erişim izni verildiyse, kullanıcı Facebook hesabına ACAccountStore'dan erişim talebinde bulunursanız, istediğiniz parametrelerle bir SLRequest oluşturmak için bu hesabı kullanırsınız, burada "/ me" grafik nesnesini istersiniz.

Özellikleri:

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

Authenticate:

- (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); 
              } 
             }]; 
} 

alın "Benim":

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

Kod ilk defa benim için iyi çalışıyor. Ama bir dahaki sefere fb hesabının bağlantısını kestim ve sonra tekrar bağladıktan sonra { error = { code = 190; message = "Erişim belirteci cihazda geçersiz kılındı."; type = OAuthException; }; } – NSCry

+0

@NSIllusion erişim belirteci sorununu çözdünüz mü? – user717452

+1

@ user717452 Neredeyse çözüldü, ancak bana iyi bakmanın iyi bir cevabı bulamadı. Sorunum simülatör içeriğini ve ayarlarını sıfırlayarak çözüldü. – 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]; 
     } 
    });