是否有人能够使用反向身份验证成功获取用户的OAuth令牌?我的应用程序具有反向身份验证权限,但我很难获得有效的身份验证令牌。我正在使用OAuthconsumer,我对如何修改额外的x_auth_mode模式的OAuth调用感到困惑。
我一直在
Failed to validate oauth signature and token
非常感谢任何见解,提前谢谢!
答案 0 :(得分:6)
你知道Sean Cook(Twitter的开发者)的示例代码吗? https://github.com/seancook/TWiOS5ReverseAuthExample
他的解决方案正在运行,比Twitter文档更详细...... https://dev.twitter.com/docs/ios/using-reverse-auth
答案 1 :(得分:0)
我发现seancook的例子令人费解,因为这个过程似乎比实际上复杂得多。这是反向认证的简单本质:
NSMutableURLRequest *rq = [TDOAuth URLRequestForPath:@"/oauth/request_token" POSTParameters:@{@"x_auth_mode": @"reverse_auth"} host:@"api.twitter.com" consumerKey:APIKey consumerSecret:APISecret accessToken:nil tokenSecret:nil];
[NSURLConnection sendAsynchronousRequest:rq queue:nil completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
id oauth = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
SLRequest *reverseAuth = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/oauth/access_token"] parameters:@{
@"x_reverse_auth_target": APIKey,
@"x_reverse_auth_parameters": oauth
}];
reverseAuth.account = account;
[reverseAuth performRequestWithHandler:^(NSData *data, NSHTTPURLResponse *urlResponse, NSError *error) {
id creds = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
id credsDict = [NSMutableDictionary new];
for (__strong id pair in [creds componentsSeparatedByString:@"&"]) {
pair = [pair componentsSeparatedByString:@"="];
credsDict[pair[0]] = pair[1];
}
NSLog(@"%@", credsDict);
}];
}];
我的示例使用TDOAuth,但任何OAuth库都可以。