我在我的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帐户是在没有密码的情况下添加的。我去了设置应用程序,账户就在那里,没有密码。
这并不是最终的答案,但至少它解释了错误的来源。
发布于 2013-07-10 14:27:53
似乎没有一种记录在案的方法可以首先执行凭证检查。
如果出现授权错误,您必须检查结果并通知用户。
//[...]
[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]);
});
}
}];
//[...]
https://stackoverflow.com/questions/14405550
复制相似问题