iOS:身份验证数据错误,来自 Twitter 的代码 215

标签 ios oauth twitter

我正在 iPhone 4 上开发和测试一个应用程序,它非常棒。我测试了我的 Twitter 代码,效果很好。我会检索用户的帐户,然后关注某个帐户。

今天,我尝试在另外两台设备上安装并测试该应用,但它无法正常工作!

响应:

{"errors":[{"message":"Bad Authentication data","code":215}]}

代码:

- (void)followApp {
    if (!self.account) {
        [self _signInWithHandler:^{
            [self followApp];
        }];
        return;
    }

    NSURL *feedURL = [NSURL URLWithString:@"https://api.twitter.com/1.1/friendships/create.json"];
    NSDictionary *parameters = @{
    @"follow" : @"true",
    @"screen_name" : [MCAppManager sharedManager].applicationTwitterHandle
    };

    TWRequest *twitterFeed = [[TWRequest alloc] initWithURL:feedURL
                                                 parameters:parameters
                                              requestMethod:TWRequestMethodPOST];

    twitterFeed.account = self.account;
    // Perform the twitter request
    [twitterFeed performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        if (!error) {
            NSLog(@"response: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
        } else {
            dispatch_async(dispatch_get_main_queue(), ^{
                self.isFollowing = NO;
                MCAlertError([error localizedDescription]);
            });
        }
    }];

    self.isFollowing = YES;
}

编辑:

好的,看来原因是其他设备上的 Twitter 帐户添加时没有密码。我进入设置应用程序,帐户就在那里,没有密码。

这并不是真正的最终答案,但至少它解释了错误的来源。

最佳答案

似乎没有记录的方法来首先执行凭据检查。

您必须检查结果并通知用户是否存在授权错误。

//[...]
[twitterFeed performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {

    if (error == nil) {

        NSError *jsonError = nil;

        id data = [NSJSONSerialization JSONObjectWithData:responseData
                                                  options:NSJSONReadingMutableLeaves
                                                    error:&jsonError];
        if ([urlResponse statusCode] == 200) {

            if (data) {

                NSLog(@"response: %@", data);
            } else {

                dispatch_async(dispatch_get_main_queue(), ^{
                    self.isFollowing = NO;
                    MCAlertError([jsonError localizedDescription]);
                });
            }
        } else if ([urlResponse statusCode] == 400) {

            //Bad authorization data
            if ([[[[data objectForKey:@"errors"] objectAtIndex:0] objectForKey:@"code"] intValue] == 215) {

                dispatch_async(dispatch_get_main_queue(), ^{
                    self.isFollowing = NO;
                    MCAlertError(@"To use this feature you need a twitter account properly authenticated in your iOS settings");
                });
                self.account = nil;
            } else {

                dispatch_async(dispatch_get_main_queue(), ^{
                    self.isFollowing = NO;
                    MCAlertError(@"Generic service error");
                });
            }
        } else {

            dispatch_async(dispatch_get_main_queue(), ^{
                self.isFollowing = NO;
                MCAlertError(@"Generic service error");
            });
        }
    } else {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.isFollowing = NO;
            MCAlertError([error localizedDescription]);
        });
    }
}];
//[...]

关于iOS:身份验证数据错误,来自 Twitter 的代码 215,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405550/

相关文章:

ios - Swift DispatchGroup 导致错误 : [Firebase/Firestore][I-FST000001] Could not reach Cloud Firestore backend

azure - 在 azure 应用程序中允许database.windows.net范围的位置

ios - 如何在 iOS 中使用 oauth 在 Twitter 帐户中发布图像?

ruby-on-rails - 如何使用 Test::Unit 在全局 stub http 请求?

ios - 如何以编程方式设置 UIGestureRecognizer 的状态?

iOS解析SDK : Multiple query results put into an Array

ios - 委托(delegate)返回不正确的 ViewController 实例号

c# - 需要 OAuth token 的单元测试 API

python - 有谁知道使用 python 实现谷歌身份验证的任何好的完整资源?

ios - 使用未解析的标识符 : PFTwitterUtils swift