xauth твиттер в приложении для iphone

Я буду использовать xAuth для публикации данных в своей учетной записи Twitter, и я как бы застрял с подписью, заголовком.

У меня есть следующий код:

    // Build url
NSString *url = [NSString stringWithFormat:@"https://api.twitter.com/oauth/access_token?x_auth_username=%@&x_auth_password=%@&x_auth_mode=client_auth",
                 x_auth_username,
                 x_auth_password];

// Signature
NSString *oauth_nonce = @"";
NSString *oauth_signature_method = @"HMAC-SHA1";
NSString *oauth_timestamp = [NSString stringWithFormat:@"%0.0f", [[NSDate date] timeIntervalSince1970]];
NSString *oauth_version = @"1.0";
NSString *x_auth_mode = @"client_auth";

NSString *sig = [NSString stringWithFormat:@"https://api.twitter.com/oauth/access_token&oauth_consumer_key=%@&oauth_nonce=%@&oauth_signature_method=%@&oauth_timestamp=%@&oauth_version=%@&x_auth_mode=client_auth&x_auth_password=%@&x_auth_username=%@",
                 oauth_consumer_key,
                 oauth_nonce,
                 oauth_signature_method,
                 oauth_timestamp,
                 oauth_version,
                 x_auth_mode,
                 x_auth_password,
                 x_auth_username];

// Encode signature
NSString *encodedSig = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)sig,NULL,(CFStringRef)@"/:+,=&",kCFStringEncodingUTF8 );
NSLog(@"encoded signature:%@",encodedSig);

/*
    NSData *dSecret = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *dBase = [base dataUsingEncoding:NSUTF8StringEncoding];
uint8_t result[CC_SHA1_DIGEST_LENGTH];
CCHmacContext hmacCtx;
memset(&hmacCtx, 0, sizeof(hmacCtx));
CCHmacInit(&hmacCtx, kCCHmacAlgSHA1, dSecret.bytes, dSecret.length);
CCHmacUpdate(&hmacCtx, dBase.bytes, dBase.length);
CCHmacFinal(&hmacCtx, result);
*/

// Headers
NSString *header = [NSString stringWithFormat:@"OAuth oauth_nonce=\"%@\", oauth_signature_method=\"%@\", oauth_timestamp=\"%@\", oauth_consumer_key=\"%@\", oauth_signature=\"%@\", oauth_version=\"%@\"",
                    oauth_nonce,
                    oauth_signature_method,
                    oauth_timestamp,
                    oauth_consumer_key,
                    oauth_signature,
                    oauth_version];

// Perform HTTP request
[Helpers httpPostWithString:encodedUrl];

Я не совсем понимаю, как: - закодировать подпись - прикрепить подпись и заголовок к запросу

Не могли бы вы помочь?

Большое спасибо,

Люк


person Luc    schedule 06.10.2010    source источник
comment
что такое подпись в твиттере oauth?   -  person GameLoading    schedule 11.04.2011


Ответы (3)


Зачем изобретать велосипед? Существует множество существующих библиотек XAuth и OAuth, которые вы можете использовать. текст ссылки

person coneybeare    schedule 06.10.2010
comment
Я просто хочу иметь возможность выдавать 2 запроса https, мне не нужны/не хочу использовать другие библиотеки (которые иногда сложно интегрировать). - person Luc; 06.10.2010
comment
одевают. Но когда все закончится, спросите себя, какой подход занял бы меньше времени для интеграции. Кроме того, какой подход был протестирован сообществом? - person coneybeare; 06.10.2010
comment
полностью согласен с вами. Я просто хотел понять, что иногда lib делать гораздо больше, чем когда-то нужно. - person Luc; 07.10.2010
comment
Хорошо, вы заставили меня передумать и еще раз попробовать xAuthTwitterEngine Арала. Одна ошибка связывания не решается в xcode, и она должна быть готова к тестированию :) Я дам вам знать (если хотите :)). - person Luc; 08.10.2010
comment
Арал обновил его теперь, когда MGTwitterEngineDemo был обновлен для использования XAuth. Он рекомендует больше не использовать xAuthTwitterEngine. См. github.com/aral/MGTwitterEngineDemo. - person Ari Braginsky; 17.12.2010
comment
Также имейте в виду, что если вы хотите иметь возможность публиковать сообщения в Twitter с одним и тем же экземпляром движка Twitter, например, из разных контроллеров представления, вы, вероятно, захотите сохранить его в центральном месте, например, синглтон, и передавать ссылки делегата/селектора. . - person Ari Braginsky; 06.01.2011

Вот простая библиотека от Эрика Джонсона twitter-xauth.

person TesterTurnedDeveloper    schedule 18.04.2011

Пример рабочего кода Twitter xAuth можно найти по адресу http://bitbucket.org/brentsimmons/rstwittercallgetxauthaccesstoken/src. .

Как говорится на этой странице:

Оказывается, что материал OAuth/xAuth не сложен — вам просто нужно правильно указать детали.

person Kris Markel    schedule 06.10.2010