当我尝试使用我的授权凭据(oauth)
获取https://api.twitter.com/1.1/statuses/retweets/21947795900469248.json时,我得到了:
{
"errors": [
{
"message": "Your credentials do not allow access to this resource",
"code": 220
}
]
}
错误:任何其他twit ID无效。这个端点有问题吗?因为直到昨天才得到真实的反应。有什么变化?
答案 0 :(得分:2)
我在获取错误代码220方面遇到了同样的问题。在我的情况下修复是提示用户再次输入它的Twitter密码。
检查以下示例代码:
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodPOST
URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update.json"]
parameters:@{@"status": tweetString}];
[request setAccount:account];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if ([responseData isKindOfClass:[NSData class]]) {
NSError *jsonError = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonError];
if (json) {
NSArray *errors = json[@"errors"];
if (errors.count) {
NSUInteger errorCode = [json[@"errors"][0][@"code"] integerValue];
if (errorCode == 220) {
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
[accountStore renewCredentialsForAccount:account completion:^(ACAccountCredentialRenewResult renewResult, NSError *error2) {
NSLog(@"Renew result: %ld, error: %@", (long)renewResult, error2);
if (renewResult == ACAccountCredentialRenewResultRenewed) {
[self __makeTweetWithAccounts:@[account] rating:rating review:review];
}
}];
}
}
}
}
NSLog(@"Twitter response data: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
}];
答案 1 :(得分:1)
当我注意到我使用的是GET而不是POST时,出现了同样的错误。改变它并且它有效。
答案 2 :(得分:0)
将应用程序权限设置为读取,写入和定向邮件 ...并重新生成访问令牌和令牌密钥。
它对我有用
答案 3 :(得分:0)
iOS SDK7.1上的SLRequest类遇到了类似的问题。现在为了获得转推,或转推后,我开始使用弃用的TWRequest类。只需#import资源并使用此方法:
- (void)retweetMessageV2HavingId:(NSString*)messageId {
NSString *retweetString = [NSString stringWithFormat:@"https://api.twitter.com/1.1/statuses/retweet/%@.json", messageId];
NSURL *retweetURL = [NSURL URLWithString:retweetString];
TWRequest *request = [[TWRequest alloc] initWithURL:retweetURL parameters:nil requestMethod:TWRequestMethodPOST];
request.account = self.account;
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if (responseData)
{
NSError *parseError = nil;
id json = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];
if (!json)
{
NSLog(@"Parse Error: %@", parseError);
}
else
{
NSLog(@"%@", json);
}
}
else
{
NSLog(@"Request Error: %@", [error localizedDescription]);
}
}]; }
答案 4 :(得分:0)
我已生成访问令牌,转到我当前应用页面中的“密钥和访问令牌”标签。然后,我为“auth”obj的访问令牌设置了“访问令牌”和“访问令牌秘密”,该授权允许应用程序在源代码中访问。