Twitter Reverse Auth iPhone

时间:2011-12-23 01:51:18

标签: api twitter

是否有人能够使用反向身份验证成功获取用户的OAuth令牌?我的应用程序具有反向身份验证权限,但我很难获得有效的身份验证令牌。我正在使用OAuthconsumer,我对如何修改额外的x_auth_mode模式的OAuth调用感到困惑。

我一直在

Failed to validate oauth signature and token

非常感谢任何见解,提前谢谢!

2 个答案:

答案 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库都可以。