SLRequest – Twitter返回代码215(错误的authentication数据)
我有像Instagram应用程序上传照片的应用程序。 首先我的应用上传照片并返回链接。 然后发送链接状态消息。 当我在我的iPhone上testing时,一切正常,但是当我在另一个iPhone上testing时,twitter会返回代码为215的错误authentication数据。 任何想法可能是错的? Thx回复。
- (void)tweet:(NSString *)identifier withCompletionHandler:(void (^)())completionHandler { ACAccountStore *accountStore = [[ACAccountStore alloc] init]; // Create an account type that ensures Twitter accounts are retrieved. ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; // Request access from the user to use their Twitter accounts. [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { if(granted) { if (identifier) { // Get the list of Twitter accounts. NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; if ([accountsArray count] > 0) { // Grab the initial Twitter account to tweet from. NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update.json"]; NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Check out this great flick on BLA BLA %@", [BLA_URL stringByAppendingFormat:@"/%@/%@", @"flick", identifier]] forKey:@"status"]; SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url parameters:dict]; [request setAccount:[accountsArray lastObject]]; [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { if ([urlResponse statusCode] == 200) { NSLog(@"TWEEET!"); } else { NSError *jsonError; id data = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&jsonError]; dispatch_async(dispatch_get_main_queue(), ^{ UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Twitter response" message:[NSString stringWithFormat:@"%d S: %d %@", [error code], [urlResponse statusCode], data] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; NSLog(@"NOOO TWEEET!"); [alertView show]; completionHandler(); }); } }]; ...
预检function:
- (IBAction)twitterButtonTapped:(id)sender { if ([self.twitterButton isSelected]) { [self.twitterButton setSelected:NO]; } else { [self.twitterButton setSelected:YES]; ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { if (!granted) { [self.twitterButton setSelected:NO]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Twitter access" message:@"Please make sure you have allowed twitter for BLA BLA in your Settings." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO]; } }]; }
}
好的,我已经得到了答案! 问题是,其他iPhone有不完整的帐户数据 – 你必须在你的设置应用程序中填写用户名和密码。