Проверка OAuth / xAuth Instapaper (для iOS)

#objective-c #ios #oauth #xauth

#objective-c #iOS #oauth #xauth

Вопрос:

Я пытаюсь включить Instapaper API в приложение, которое я создаю. При чтении полного API требуется использование OAuth. У меня готова библиотека OAuthConsumer, и это тот код, который у меня есть на данный момент:

     OAConsumer *consumer = [[OAConsumer alloc] initWithKey:INSTAPAPER_API_CONSUMER_KEY
                                                    secret:INSTAPAPER_API_CONSUMER_SECRET];

    NSURL *url = [NSURL URLWithString:instapaper_API_ACCESS_TOKEN_URL];

    OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url
                                                                   consumer:consumer
                                                                      token:nil   // we don't have a Token yet
                                                                      realm:nil   // our service provider doesn't specify a realm
                                                          signatureProvider:nil]; // use the default method, HMAC-SHA1

    [request setHTTPMethod:@"POST"];

    [request setParameters:[NSArray arrayWithObjects:
                            [OARequestParameter requestParameter:@"x_auth_mode" value:@"client_auth"],
                            [OARequestParameter requestParameter:@"x_auth_username" value:username.text],
                            [OARequestParameter requestParameter:@"x_auth_password" value:password.text],
                            nil]];


    OADataFetcher *fetcher = [[OADataFetcher alloc] init];

    [fetcher fetchDataWithRequest:request
                         delegate:self
                didFinishSelector:@selector(didReceiveAccessToken:data:)
                  didFailSelector:@selector(didFailOAuth:error:)];
  

Моя единственная проблема после этого заключается в том, что ни один из селекторов не запускается после того, как средство выборки извлекает данные. У меня есть селекторы, определенные в том же исходном файле, но есть некоторые другие, определенные в OADataFetcher.m:

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
OAServiceTicket *ticket = [[OAServiceTicket alloc] initWithRequest:request
                                                          response:response
                                                              data:responseData
                                                        didSucceed:[(NSHTTPURLResponse *)response statusCode] < 400];

[delegate performSelector:didFinishSelector withObject:ticket withObject:responseData];
[ticket release];
}
  

Есть предложения, что мне следует делать / что я делаю неправильно?

Комментарии:

1. Вызывается ли connectionDidFinishLoading:? Введите NSLog или точку останова, чтобы увидеть, что происходит.

2. Кроме того, сохраняете ли вы где-нибудь fetcher?

3. Неважно, очевидно, библиотека OAuthConsumer, которую я использовал, была не очень хороша. Я нашел лучший вариант (с демонстрацией), и теперь все работает. Еще раз спасибо за ваши предложения!

4. Это не для вас. только я 🙂 Рад, что у вас получилось.

5. SpacePyro, не могли бы вы указать мне, как исправить библиотеку OAuthConsumer, пожалуйста? Я пытаюсь реализовать то же самое в приложении.