2012-09-21 31 views
5

Dağ Aslan artık resmen Facebook Ben Accounts.framework ve Facebook Geliştirici Uygulama ve kullanılan bir App kurmakErişim Facebook hesapları

OS X'in Social.framework ile biraz oynamak istediğini entegre olduğu gibi , Xcode gelen App başlattığında

ACAccountStore *acStore = [[ACAccountStore alloc] init]; 
ACAccountType *accType = [acStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:FB_APP_ID, ACFacebookAppIdKey, @"read_stream, publish_stream", ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil]; 


[acStore requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) { 
    if (granted) { 
     NSLog(@"Accounts: %@", acStore.accounts); 
     NSLog(@"Access granted"); 
    } else { 
     NSLog(@"Access denied"); 
    } 
}]; 

Şimdi hep ilk 2-3 kere hata Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"

olsun OS X: aşağıdaki kod oturum açmış kullanıcının Facebook Hesaplarına erişim talebinde bulunmak onay iletişim kutusu "XYZ sizin Facebook Hesapları erişmek istiyor" görüntülenir, tamam tıkladım ve ben "Uygulama henüz yüklenmemiş" gibi bir şey söyleyerek bir hata var. Bu hata artık "kayboldu" ve yukarıda belirtilen hata alıyorum.

Sorum şu: Ben OS X ile çalışması için benim Xcode Projesi (Info.plist) özel bir şey yapılandırmak zorunda veya facebook Geliştirici Uygulama içinde musunuz? Yoksa kodda bir şey mi eksik? Bu konuyla ilgili örnekler ve Öğreticiler çok nadir görünmektedir: -/

Zaten Twitter/Facebook Entegrasyonu hakkında WWDC 2012 video izledim ama kullandığım neredeyse tam kodunu kullanır.

Herhangi bir yardım,

Cheers :-) Björn

Güncelleme Sorunu çözüldü
, sadece yeterince dikkatli dokümanlar okumadım takdir ;-) ben geçmek zorunda NSArray olarak izinler ve dize olarak değil.

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: FB_APP_ID, ACFacebookAppIdKey, [NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"email", @"user_likes", nil], ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];

Şimdi OS X Ben App benim adıma Facebook'ta yayın izin vermek istemediğimi soran bir uyarı gösterir , tamam tıklayın ve: Böyle bakmak için seçenekler sözlüğü modifiye ettik yeni hata Facebook hesaplarına erişim yok sonuçlanan görünür:

Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time."

zaten sadece email ya da sadece user_likes ama hepsi aynı hata ile sonuçlandı olmak için izinleri değiştirilmiş. Sadece read_stream erişim isteyebilir Eğer erişim izni alır ancak mesajın Error validating access token: User XXXXXX has not authorized application XXXXXX.

Güncelleme ile OAuth hatası 190 sonuçlanır 2: Şimdi tüm sorunlarımı çözdü
aşağıya cevabımı bakın.

cevap

11

Pekala, sonunda

:-) bunu çözüldü zaman bir kullanıcının Facebook hesaplarına ilk erişim iste, sen olabilir Facebook'un İzin Başvurusu "User and Friend permissions" altında listelenen bir kullanıcıdan yalnızca istek izinleri. kullanıcı verilen erişimin kez ve bununla

Ayrıca size App gerektirdiği herhangi bir ek izin isteyebilir, Facebook'ta uygulama yüklü. Aynı anda ve yazma izinlerini, peş peşe okumak için sen sormayın olabilir önemlidir!Bu nedenle aynı istekte read_stream ve publish_stream iznini istemek işe yaramayacaktır. Bu birileri :-)

+0

Merhaba, soruma cevap verebilir misiniz? http://stackoverflow.com/questions/12644229/ios-6-facebook-posting-procedure-ends-up-with-permissions-alert-view – Stas

+0

Burada gönderdiğiniz her şeyi denememe rağmen - farklı izin türleri kastediyorum .. sonuç aynı :( – Stas

+1

Güzel iyi hazırlanmış aferin! .. Ayrıca bana çok yardımcı oldu – Warewolf

2

Ben Facebook dokümanlar ek bir uyarı olduğunu eklemek istiyorum yardımcı olacaktır

self.store = [[ACAccountStore alloc] init]; 

ACAccountType *accType = [self.store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

NSMutableDictionary *options = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            FB_APP_ID, ACFacebookAppIdKey, 
            [NSArray arrayWithObjects:@"email", @"user_about_me", @"user_likes", nil], ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];  

[self.store requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) { 
    if (granted && error == nil) { 
     self.accounts = self.store.accounts;  
     [options setObject:[NSArray arrayWithObjects:@"read_stream, read_mailbox, read_requests", nil] forKey:ACFacebookPermissionsKey]; 
     [self.store requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) { 
      if (granted && error == nil) { 
       completionHandler(granted, error); 
      } else { 
       NSLog(@"Access denied 2"); 
       NSLog(@"%@", [error description]); 
      } 
     }]; 
    } else { 
     NSLog(@"Error: %@", [error description]); 
     NSLog(@"Access denied"); 
    } 
}]; 

Umut:

Bu kullandığım temelde kodudur

// if a user has *never* logged into your app, you MUST include one of 
// "email", "user_location", or "user_birthday". Other read 
// permissions can also be included here. 

Bunun yapılmaması, aynı hataya neden olur.

İlgili konular