我正在寻找构建一个简单的cocoa应用程序来在协作应用程序Asana中创建项目。
我需要提出卷曲请求,但我不确定如何处理它。
实施例(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"
关于如何运行或模仿“curl -u”命令的任何想法?
谢谢!
亚当
答案 0 :(得分:3)
-u/--user
选项代表Basic Authentication。它基本上为请求添加了Authorization
HTTP标头,其用户名/密码以base64编码,例如Authorization: Basic Zm9vOmJhcg==
。
基本身份验证正是Asana API支持的身份验证方案之一:
Asana API支持两种独立的身份验证方案:OAuth 2.0和使用API密钥的HTTP基本身份验证。
在实践中,根据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
等{{1}}类别实现的。