2010-10-06 2 views
1

Я буду использовать xAuth для размещения данных на моей учетной записи в twitter, и я как бы застрял с подписью, заголовком.xauth twitter on iphone app

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

// 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]; 

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

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

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

Люк

+0

что подпись в Twitter OAuth? – GameLoading

ответ

2

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

+0

Я просто хочу, чтобы иметь возможность выпускать 2 https-запросов, мне не нужно/не нужно использовать другие библиотеки (которые иногда трудно интегрировать). – Luc

+0

подходит. Но когда все закончится, спросите себя, какой подход займет меньше времени для интеграции. Кроме того, какой подход прошел тестирование сообщества? – coneybeare

+0

полностью с вами. Я просто хотел понять это, иногда lib делать гораздо больше, чем когда-то нужно. – Luc