如何在 iOS 中使用 Twitter API 1.1 获取 Token
Posted
技术标签:
【中文标题】如何在 iOS 中使用 Twitter API 1.1 获取 Token【英文标题】:How to get Token using Twitter API 1.1 in iOS 【发布时间】:2013-12-07 06:03:13 【问题描述】:我正在使用“STTwitter”从下面的 URL 和请求正文中获取令牌
https://dev.twitter.com/docs/api/1.1/post/oauth2/token
下面是带有 URL 的请求正文代码
- (void)verifyCredentialsWithSuccessBlock:(void(^)(NSString *username))successBlock errorBlock:(void(^)(NSError *error))errorBlock
[self postResource:@"oauth2/token"
baseURLString:@"https://api.twitter.com"
parameters:@ @"grant_type" : @"client_credentials"
useBasicAuth:YES
uploadProgressBlock:nil
downloadProgressBlock:nil
successBlock:^(id request, NSDictionary *requestHeaders, NSDictionary *responseHeaders, id json)
NSString *tokenType = [json valueForKey:@"token_type"];
if([tokenType isEqualToString:@"bearer"] == NO)
NSError *error = [NSError errorWithDomain:NSStringFromClass([self class]) code:STTwitterAppOnlyCannotFindBearerTokenInResponse userInfo:@NSLocalizedDescriptionKey : @"Cannot find bearer token in server response"];
errorBlock(error);
return;
self.bearerToken = [json valueForKey:@"access_token"];
successBlock(_bearerToken);
errorBlock:^(id request, NSDictionary *requestHeaders, NSDictionary *responseHeaders, NSError *error)
errorBlock(error);
NSLog(@"ERROR %@",[error description]);
];
为了调用上面的方法,我在下面的代码中做
STTwitterAppOnly *twitter1 = [[STTwitterAppOnly alloc] init];
[twitter1 verifyCredentialsWithSuccessBlock:^(NSString *bearerToken)
NSLog(@"sd");
[self.twitter getUserTimelineWithScreenName:@"SEREEN_NAME"
successBlock:^(NSArray *statuses)
NSLog(@"ERROR ::: %@",[statuses description]);
// ...
errorBlock:^(NSError *error)
// ...
];
errorBlock:^(NSError *error)
// ...
];
执行上述代码时出现以下错误...
**Error Domain=STHTTPRequest Code=99 "Unable to verify your credentials"**
你能建议我在我的代码中遗漏了什么吗?
我担心的是,我想在不登录 Twitter 的情况下阅读 Twitter 提要。仅在 Twitter API V1.1 中使用“Consumer Key”和“Secret Key”。
谢谢
【问题讨论】:
【参考方案1】:如果你有 ConsumerKey 和 ConsumerSecret 你可以试试
STTwitterAPIWrapper *twitterAPI = [[STTwitterAPIWrapper twitterAPIApplicationOnlyWithConsumerKey:@"Your Consumer Key" consumerSecret:@"Your Consumer Secret"] autorelease];
[twitterAPI verifyCredentialsWithSuccessBlock:^(NSString *username)
[twitterAPI getUserTimelineWithScreenName:@"your ScreenName" count:25 successBlock:^(NSArray *statuses)
NSLog(@"Success:%@", statuses);
errorBlock:^(NSError *error)
NSLog(@"Error : %@",error.description);
];
errorBlock:^(NSError *error)
NSLog(@"Error : %@",error.description);
];
【讨论】:
【参考方案2】:验证您是否在 plist 和 header 前缀中输入了 Consumer key 和 Consumer Secret...
【讨论】:
【参考方案3】:您发布的代码有几个问题。首先,您从验证方法错误块而不是成功块发出请求。其次,您直接使用 postResource 方法,而不是更高级别的方法来做您想做的事。
如果您想要的只是消费者令牌的不记名令牌,您可以从 STTwitter README 中复制/粘贴示例代码到 App Only Authentication 部分。
【讨论】:
以上是关于如何在 iOS 中使用 Twitter API 1.1 获取 Token的主要内容,如果未能解决你的问题,请参考以下文章
如何通过iOS中的Twitter API获取用户电子邮件地址?
如何在 Python 中使用新的 Twitter API 1.1 搜索? [关闭]