2010-10-06 6 views
1

Je vais utiliser xAuth pour publier des données sur mon compte Twitter et je suis coincé avec la signature, en-tête.xauth twitter sur l'application iPhone

J'ai le code suivant:

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

Je ne vois pas vraiment comment: - encoder la signature - joindre la signature et en-tête à la demande

Pourriez-vous s'il vous plaît aider?

Merci beaucoup,

Luc

+0

ce qui est la signature sur Twitter OAuth? – GameLoading

Répondre

2

Pourquoi réinventer la roue? Il y a beaucoup de bibliothèques XAuth et OAuth existantes à votre disposition. link text

+0

Je veux juste pouvoir émettre 2 requêtes https, je n'ai pas besoin de/je veux utiliser d'autres bibliothèques (qui sont parfois difficiles à intégrer). – Luc

+0

vous conviennent. Mais quand tout est fini, demandez-vous quelle approche aurait pris le moins de temps pour s'intégrer. De plus, quelle approche a été testée dans la communauté? – coneybeare

+0

totalement aggree avec vous. Je voulais juste comprendre la chose, parfois lib faire beaucoup plus qu'une fois besoin. – Luc

Questions connexes