【问题标题】:Facebook authentication error - The operation couldn’t be completedFacebook 身份验证错误 - 操作无法完成
【发布时间】:2012-03-11 18:10:08
【问题描述】:

我的游戏中有一个选项供用户将成就发布到他们的墙上。如果他们已登录,即他们的令牌仍处于活动状态,则可以正常工作。但是,如果他们需要更新他们的令牌,应用程序退出并且 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?

感谢您的帮助!

【问题讨论】:

    标签: iphone objective-c facebook-graph-api oauth access-token


    【解决方案1】:

    当您设置发送到 facebook 的参数字典时 .. 也传递访问令牌,像这样

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

    【讨论】:

    • 嗯 - 试过了,但似乎没有任何区别。我仍然遇到同样的错误。
    • 谢谢亲爱的。只需添加访问令牌。现在它工作了
    【解决方案2】:

    嗯,我发现了问题。至少我认为我找到了它,因为它现在可以工作,我只是希望我没有在这个过程中引入另一个错误。基本上我的登录代码如下所示:

        - (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 方法的末尾,现在它似乎工作得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多