2013-04-15 11 views
9

Tworzę aplikację opartą na iOS6 Social Framework ... działało dobrze, ale teraz po kilku miesiącach dostałem dziwny błąd.Znacznik dostępu do Facebooka wygasł - iOS 6 Social Framework

My NSLog importowanych danych JSON Facebooku do NSDictionary jest:

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; 

Wydaje mój token dostępu wygasła, ale nie jest iOS6 ramowa Społeczny powinien dbać o to automatycznie?

Wszelkie pomysły na temat tego, jak mogę je rozwiązać, a także uniknąć podobnych problemów w przyszłości, aby móc bezpiecznie publikować prawdziwą aplikację?

Odpowiedz

13

wreszcie go ... było konieczne, aby sprawdzić, czy NSDictionary miał obiekt o nazwie „error” (w tym przypadku o błędzie Facebook żeton wygasł), a jeśli tak, to wywołać metodę odnowić 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

Przegłosowałem dzisiaj twoje pytanie i odpowiedź. Właśnie uratowałeś moją skórę !!! Gdzie na Ziemi to znalazłeś? Dzięki wielkie. – Douglas

+0

cieszymy się z pomocy;) –