2012-02-21 1895 views
0

我有一个选项可供我的游戏用户将成就发布到他们的墙上。如果他们已登录,即他们的令牌仍然处于活动状态,则可以正常工作。但是,如果他们需要续订令牌,应用程序将退出并在返回到应用程序之前加载Facebook身份验证页面一秒(如果他们已主动注销,则只需在身份验证页面上单击“确定”,否则会自动发生) 。Facebook身份验证错误 - 无法完成操作

问题是,如果发生这种情况,游戏返回时,请求失败。但是,由于他们现在已经登录,如果他们再次按下“分享到墙”按钮,它可以正常工作。由失败的请求输出的错误消息它:

DIDLOGIN 
2012-02-21 12:01:33.502[18153:15803] Response received 
2012-02-21 12:01:33.502[18153:15803] Request did load raw response 
2012-02-21 12:01:33.502[18153:15803] Request failed, error: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x9992010 {error=<CFBasicHash 0x99785e0 [0x2093b38]>{type = mutable dict, count = 3, 
entries => 
    2 : <CFString 0x9963370 [0x2093b38]>{contents = "type"} = <CFString 0x99952a0 [0x2093b38]>{contents = "OAuthException"} 
    3 : <CFString 0x99631e0 [0x2093b38]>{contents = "message"} = <CFString 0x997e5b0 [0x2093b38]>{contents = "An active access token must be used to query information about the current user."} 
    6 : <CFString 0x998c370 [0x2093b38]>{contents = "code"} = 2500 
} 
} 

我不知道为什么我得到一个OAuthException,当我刚刚成功授权它?

感谢您的帮助!

当您设置您把它送到了Facebook ..通过ACCES则params的字典

回答

0

好吧,我发现这个问题。至少我认为我发现它,因为它现在起作用,我只希望在这个过程中不会引入另一个错误。基本上我的登录编码是这样的:

- (void)postAchievement:(NSString *)message withPicture:(NSString *)pictureURL { 
    //Set post to TRUE so the delegate posts when the method returns and configure the message. 
    DLog(@"Achievement message: %@", message); 
    self.postAchievement = TRUE; 
    self.achievementMessage = message; 
    self.wallPostPicURL = pictureURL; 
    [self fbLogin]; 
[facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

    // Save the user's credentials and expiration date 
- (void)fbDidLogin { 
    DLog(@"DIDLOGIN"); 
    self.isLoggedIn = TRUE; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
} 

fbDidLogin是当用户已经登录调用的委托方法的行[facebook requestWithGraphPath:@"me" andDelegate:self];是问题。我把它移到了fbDidLogin方法的末尾,现在它看起来很完美。

1

令牌也,,这样

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"someText", 
           @"message", 
           [fb accessToken], 
           @"access_token",nil]; 
+0

嗯 - 试过了,它似乎没有任何区别。我仍然得到同样的错误。 – Smikey 2012-02-21 12:49:03

+0

谢谢亲爱的。只需添加Access令牌。现在它工作 – 2012-12-06 10:38:30