2013-06-20 167 views
1

我正在研究構建一個簡單的可可應用程序以在協作應用程序Asana中創建項目。Curl,Asana&ObjectiveC

我需要做一個捲曲請求,但我不確定如何解決它。

例(https://asana.com/developers/api-reference/projects):

curl -u <api_key>: https://app.asana.com/api/1.0/projects -d "name=Things to Buy" -d "notes=These are things we want to purchase." -d "workspace=14916" 

的我怎麼能運行或模仿 「捲曲-u」 命令,任何想法?

謝謝!

亞當

回答

3

-u/--user選項代表Basic Authentication。它基本上在請求中添加了一個Authorization HTTP標頭,其中以base64編碼的用戶名/密碼,例如Authorization: Basic Zm9vOmJhcg==

基本認證正是由體式API支持的認證方案之一:

體式API支持兩個獨立的認證方案:的OAuth 2.0和HTTP基本認證使用API​​密鑰。

在實踐中,並根據Asana docs,客戶應通過:

API密鑰的用戶名和密碼爲空

所以,如果你想進行這樣的一個簡單的Objective-C中的請求,例如NSURLConnection所有你需要做的就是自己創建這個Authorization頭,注意使用一個空的密碼。你應該能夠很容易地做到這一點(見本answer):

NSString *authStr = [NSString stringWithFormat:@"%@:", apiKey]; 
NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding]; 
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodingWithLineLength:80]]; 
[request setValue:authValue forHTTPHeaderField:@"Authorization"]; 

注:Base64編碼通過NSData類實現諸如this one

+0

感謝您的幫助!任何提示,我將如何去像傳遞變量一樣傳遞curl:curl -u myapiKey12345:https://app.asana.com/api/1.0/projects -d「name = Test Job」-d「notes = Test嗒嗒「。 -d「workspace = 11234456789」-d「team = 12345466778」 – adamteale

+0

我懂了,非常感謝! – adamteale

+0

@adamteale如果它工作,你應該upvote並接受他的答案;-)謝謝@deltheil! – agnoster