Твиттер Обратный Аут iPhone - PullRequest
4 голосов
/ 23 декабря 2011

Кто-нибудь смог успешно получить токен OAuth пользователя с помощью обратной аутентификации?Мое приложение имеет разрешения на обратную аутентификацию, но мне трудно получить действительный токен аутентификации.Я использую OAuthconsumer, и я немного запутался, как изменить вызов OAuth для дополнительного режима x_auth_mode.

Я продолжаю получать

Failed to validate oauth signature and token

Любое понимание будет с благодарностью, заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 24 апреля 2012

Знаете ли вы пример кода от Шона Кука (разработчик в Twitter)? https://github.com/seancook/TWiOS5ReverseAuthExample

Его решение работает и является более подробным, чем документация Twitter ... https://dev.twitter.com/docs/ios/using-reverse-auth

0 голосов
/ 04 октября 2014

Я нашел пример 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...