Публикация твита с использованием OAuth из приложения IOS - PullRequest
2 голосов
/ 28 мая 2011

Я создаю Twitter-клиент для IPhone и использую OAuth для аутентификации моих запросов в Twitter,

Прямо сейчас я могу получить домашнюю временную шкалу и даже публиковать твиты (не содержащие пробелов и символов), проблема начинается, когда я пытаюсь опубликовать твит, содержащий пробелы, например, он дает мне: {"error ":" Неверная подпись "," запрос ":" \ / 1 \ / statuses \ /update.json "}

Например, твит: «ThisIsATweet» работает, но твит: «это твит» не работает вот мой http код тела запроса:

NSData* body =[NSString stringWithFormat:@"status=%@",[self percentageEncoding:tweet]];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d",[body length]] forHTTPHeaderField:@"Content-Length"];

[request setHTTPBody:[body dataUsingEncoding:NSISOLatin1StringEncoding]];

Ответы [ 3 ]

0 голосов
/ 28 мая 2011

Попробуйте изменить кодировку на NSASCIIStringEncoding или NSUTF8StringEncoding и посмотреть, работает ли она.Я не думаю, что вам нужно в процентах избегать сообщения при установке его в теле.Это необходимо только в том случае, если вы добавите его в URL в качестве значения параметра.

[request setHTTPBody:[[NSString stringWithFormat:@"status=%@", tweet] 
    dataUsingEncoding:NSASCIIStringEncoding]];
0 голосов
/ 03 февраля 2012

Проверьте свой request header! Я полагаю, вы создали неправильное значение подписи! помните, что ваш header должен быть примерно таким:

POST http://upload.twitter.com/1/statuses/update_with_media.json

User-Agent: themattharris' HTTP Client

Host: upload.twitter.com

Accept: /

Proxy-Connection: Keep-Alive

Authorization: OAuth oauth_consumer_key="mbmuCGVFTGHZOo5zr5Sx5A", oauth_nonce="f9685243ba64308204b1c14a05950b09", oauth_signature="LX%2BcnRvzT5Rm%2BYkPzdhX6I%2Bt9oo%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1313443626", oauth_token="119476949-KQjqYB1QCSC9ZtaTI8RRDDRJdSgk8hMcT4BJMEWi", oauth_version="1.0"

Content-Length: 34411

Content-Type: multipart/form-data;
0 голосов
/ 28 мая 2011

Сначала удалите строку с помощью stringByAddingPercentEscapesUsingEncoding:.

...