2013-04-15 6 views
9

Sto realizzando un'app basata su iOS6 Social Framework ... funzionava bene ma ora dopo pochi mesi ho ottenuto un errore strano.Token di accesso di Facebook scaduto - iOS 6 Social Framework

mio NSLog di importati dati JSON Facebook per un NSDictionary è:

profiledictionary: { 
error = { 
code = 190; 
"error_subcode" = 463; 
message = "Error validating access token: Session has expired at unix time 1365610034. The current unix time is 1366032783."; 
type = OAuthException; 

Sembra che il mio token di accesso è scaduto, ma non è iOS6 quadro sociale dovrebbe prendersi cura di esso automaticamente?

Qualche idea su come posso risolverlo ed evitare anche problemi futuri come quello, quindi posso pubblicare senza problemi un'app reale?

risposta

13

finalmente capito ... era necessario per verificare se NSDictionary ha avuto un oggetto chiamato "errore" (in questo caso Facebook errore relativo gettone scaduto), e in tal caso chiamare un metodo per rinnovare ACAccount:

if([self.profileDictionary objectForKey:@"error"]!=nil) 
{ 
[self attemptRenewCredentials]; 
} 

-(void)attemptRenewCredentials{ 
    [self.accountStore renewCredentialsForAccount:(ACAccount *)self.facebookAccount completion:^(ACAccountCredentialRenewResult renewResult, NSError *error){ 
     if(!error) 
     { 
      switch (renewResult) { 
       case ACAccountCredentialRenewResultRenewed: 
        NSLog(@"Good to go"); 
        [self getFacebookAccount]; 
        break; 
       case ACAccountCredentialRenewResultRejected: 
        NSLog(@"User declined permission"); 
        break; 
       case ACAccountCredentialRenewResultFailed: 
        NSLog(@"non-user-initiated cancel, you may attempt to retry"); 
        break; 
       default: 
        break; 
      } 

     } 
     else{ 
      //handle error 
      NSLog(@"error from renew credentials%@",error); 
     } 
    }]; 
} 
+1

Ho upvoted la tua domanda e rispondo oggi. Mi hai appena salvato la pelle !!! Dove diavolo l'hai trovato? Grazie mille. – Douglas

+0

felice di aiutare;) –