在iOS7上使用令牌创建的Twitter帐户失败

我正在研究在iOS6 / 7上运行的应用程序,并在Twitter上发布自定义视图。 为了改善用户体验,如果没有可用的系统帐户,我会向用户提供一个webview来输入他们的凭据 ,按照ACAccountCredential.h中的建议将它们存储在ACAccountStore中并使用它来发布。

它在iOS6 上运行良好但在iOS7共享失败时出现401错误 。 奇怪的是,帐户在ACAccountStore中保存没有错误,并且可以被Twitter应用程序用于在Twitter上阅读和发布(没有进一步登录),因此我假设帐户(令牌和令牌密钥)正常工作。

SLRequest *postRequest = nil; NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/update.json"]; NSDictionary *content = @{@"status":self.textToShare}; postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url parameters:content]; [postRequest setAccount:self.twitterAccount]; [postRequest performRequestWithHandler:completionHandler]; 

我也试过API v1.1,但它似乎没有帮助。 有任何想法吗?

iOS6和iOS7都会出现此问题,因为现在不推荐使用/1/statuses/update.json 。 此外,从API的v1.1开始,您必须对所有请求使用HTTPS。

您的url应更改为以下内容:

 NSURL *url = [NSURL URLWithString: @"https://api.twitter.com/1.1/statuses/update.json"]; 

有关更多信息,请参阅Twitter API常见问题解答:API v1的退役需要什么?

它适用于iOS6和iOS7,方法是更改​​URL以使用HTTPS并使用API​​ v1.1。