2010-10-06 65 views
1

我将使用xAuth在我的Twitter帐户上发布数据,而且我的签名和标头内容都有问题。xauth twitter在iphone应用程序

我有以下代码:

// 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 2011-04-11 11:12:51

回答

2

为什么另起炉灶?有很多现有的XAuth和OAuth库供您使用。 link text

+0

我只是想能够发出2个https请求,我不需要/想要使用其他库(有时很难整合)。 – Luc 2010-10-06 13:53:39

+0

适合你自己。但是当这一切结束后,问问自己哪种方法可能需要更少的时间来整合。另外,哪种方法已经过社区测试? – coneybeare 2010-10-06 15:24:47

+0

完全同意你的意见。我只是想了解这件事情,有时候lib比一次需要做得更多。 – Luc 2010-10-07 08:23:23

相关问题