API Twitter + OAuthConsumer.framework - PullRequest
0 голосов
/ 11 июля 2010

Я работаю над тестовым приложением, чтобы помочь мне лучше понять, как oAuth работает с API-интерфейсом Twitter для более крупного приложения, которое я хотел бы написать, однако у меня возникла проблема с отправкой сообщений в API после успешного получения токена доступа.

Я использую фреймворк OAuthConsumer, так как мне показалось, что это самый простой способ работать с йо-йо, то есть oAuth ...

Мой код находится ниже, вместе сконсольный журнал, и я включил ссылку на ZIP-файл проекта XCode.

http://dropbox.unknowndomain.co.uk/oAuth-Test-App.zip

Ошибка:

Ошибка домена = NSURLErrorDomain Code = -1012 UserInfo = 0x10029a100 "Операция не может быть завершена. (NSURLErrorDomain ошибка -1012.)" Основная ошибка = (Ошибка домена = kCFErrorDomainCFNetwork Code = -1012 UserInfo = 0x100296310 "Операция не может быть выполненабыть завершенным. (kCFErrorDomainCFNetwork ошибка -1012.) ")

Это ошибка, которую я получаю, когда вызывает API для отправки твита, теперь имейте в виду, что я использовал этот же exact-код для вызова незащищенных ресурсов в API без проблем и получения ответа, но при отправке твита я получаю сообщение об ошибке, которое при ближайшем рассмотрении дает некоторые подсказки об ошибке 401, которая указывает на то, что предыдущий ключ недействителен, ноЯ не могу себе представить, почему.

Я сидел на этой неделе в полном недоумении, поэтому помощь, независимо от опыта, может просто раскрыть скрытую проблему, из-за которой у нескольких человек, похоже, была ошибка -1012.кодовая страница Google, но там нет ответов.`

Журнал консоли:

2010-07-10 23: 15: 08.909 Тестовое приложение oAuth [1732: a0f] ЗапросТокен: oauth_token = *** & oauth_token_secret = *** & oauth_callback_confirmed = true

2010-07-10 23: 15: 21.131 Тестовое приложение oAuth [1732: a0f] Токен доступа: oauth_token =*** & oauth_token_secret = *** & user_id = *** & screen_name = ***

2010-07-10 23: 15: 29.439 oAuth Test App [1732: a0f] EPIC FAIL!

2010-07-10 23: 15: 29.440 oAuth Test App [1732: a0f] Токен доступа: <OAToken: 0x125408160>
2010-07-10 23:15: 29.440 Тестовое приложение oAuth [1732: a0f] Ключ: ***
2010-07-10 23: 15: 29.440 Тестовое приложение oAuth [1732: a0f] Секрет: ***

2010-07-10 23: 15: 29.440 Тестовое приложение oAuth [1732: a0f] Сервисный билет: <OAServiceTicket: 0x100296050>

2010-07-10 23: 15: 29.457 oAuth Test App [1732: a0f] Данные: Ошибка Домен = NSURLErrorDomain Код = -1012 UserInfo = 0x10029a100 "Операция не может быть завершена. (NSURLErroОшибка rDomain -1012.) "Базовая ошибка = (Ошибка домена = kCFErrorDomainCFNetwork Code = -1012 UserInfo = 0x100296310" Операция не может быть завершена.(kCFErrorDomainCFNetwork error -1012.) ")

Thanks for your help!

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

На самом деле, хотя @skorulis верен, существует проблема с поставщиком подписи, с точки зрения API Twitter кажется, что некоторые части API довольны простой текстовой подписью, в то время как другие требуют HMAC-SHA1 ...

Использование этого параметра в качестве signatureProvider: решит любые проблемы, включая вышеуказанную проблему ...

[[[OAHMAC_SHA1SignatureProvider alloc] init] autorelease]

Также была вторая проблема, когда содержимое, загруженное с сервера, не всегда было полным или дополнено нежелательным текстом ...

Прекрасные люди в IRC смогли помочь решить эту проблему, в примерах использования он использует stringWithCString:, который обесценивается и альтернатива ...

stringWithCString:encoding: также было неправильным для использования, поскольку он ищет нулевой символ до конца, к счастью, мое приложение не зависало из-за этого, но продолжало извлекать память, пока не обнаружил символ этого типа, часто довольно долго ...

Вместо этого используйте:

[[[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding] autorelease]
1 голос
/ 07 сентября 2010

Я обнаружил, что получаю эту ошибку, потому что я использовал OAPlaintextSignatureProvider в качестве signatureProvider при создании моего OAMutableURLRequest.Передача ноль вместо этого работала нормально.

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