2012-12-18 3 views
7

C'è un modo per sapere con FACEBOOK SDK 3.1 e iOS 6 se l'utente ha definito il proprio account facebook nelle impostazioni dell'iPhone per l'utilizzo nativo su facebook?Riconoscere se l'utente ha definito un account Facebook nativo nelle impostazioni di iOS 6

Quello che voglio fare è quando si apre la mia app, se l'utente ha definito un "account nativo di Facebook" nelle impostazioni di iPhone, mostra immediatamente l'avviso di iOS 6 "Consenti/Non consentire". Ma voglio farlo solo per l'integrazione nativa. Quello che voglio dire è che se so posso provare una "openSession" con FBSession, e lo mostrerà, ma se l'utente non ha definito l'account nativo, non voglio che l'app vada su Safari o su Facebook app. Quindi voglio provare a connettermi solo se l'utente ha definito un account.

qualcuno sa come saperlo?

+0

Questo è stato risposto qui: http://stackoverflow.com/a/12811583/312312 – Lefteris

+1

Hey prima grazie assegnano !!! il problema è che sembra che anche se un account fosse configurato o meno ACAccountType * at = [come accountTypeWithAccountTypeIdentifier: @ "com.apple.facebook"]; a non sembra essere nulla in iOS 6 –

risposta

2

Questo è il lavoro per me:

//Step 1. create and store an ACAccountStore in an ivar 
ACAccountStore* as = [[ACAccountStore alloc] init]; 
self.accountStore = as; 
[as release]; 

//Step 2. Get the facebook account type 
//Do not use the constant if you are in iOS5, use this string:@"com.apple.facebook" 
ACAccountType* at = [self.accountStore accountTypeWithAccountTypeIdentifier: @"com.apple.facebook"]; 

//Step 3. request access to the facebook account, passing your facebook app id 
__block typeof(self) bself = self; 
[self.accountStore requestAccessToAccountsWithType:at 
          options:@{(NSString *)ACFacebookAppIdKey: kFBAppId } 
         completion:^(BOOL granted, NSError *error) 
{ 
    //Step 4. Check if the account is integrated natively 
    //Note: if granted is NO, check for the error to see what's going on. 
    BOOL nativeAccount = granted == YES && [bself.accountStore accountsWithAccountType:at]; 


    //Step 5. clean the account store. 
    bself.accountStore = nil; 
}];