2013-04-15 11 views
9

iOS6ソーシャルフレームワークに基づいてアプリを作っています...うまくいきましたが、数ヶ月後に奇妙なエラーが発生しました。Facebook Access Token Expired - iOS 6ソーシャルフレームワーク

NSDictionaryのにインポートJSON FacebookのデータのマイのNSLogがある:

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; 

は私のアクセストークンの有効期限が切れているようだが、iOS6社会Frameworkは、自動的にそれの世話をすることになっていませんか?

私はそれをどのように解決することができますか、またそのような将来の問題を避けるためのアイデアなので、安全なアプリを公開することはできますか?

答えて

13

は最終的に...それを得たNSDictionaryのオブジェクトが(この場合はトークン有効期限の切れについてFacebookのエラー)「エラー」という名前だったかどうかを確認する必要があった、とそうメソッドを呼び出す場合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

今日あなたの質問と回答をアップしました。あなたはちょうど私の皮膚を救った!地球上でどこを見つけましたか?本当にありがとう。 – Douglas

+0

喜んで助けてください;) –

関連する問題