1

我正在考虑构建一个简单的可可应用程序来在协作应用程序 Asana 中创建项目。

我需要提出一个 curl 请求,但我不确定如何解决它。

示例(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”命令的任何想法?

谢谢!

亚当

4

1 回答 1

3

-u/--user选项代表基本身份验证。它基本上Authorization为请求添加了一个 HTTP 标头,用户名/密码以 base64 编码,例如Authorization: Basic Zm9vOmJhcg==.

Basic auth 正是 Asana API 支持的身份验证方案之一:

Asana API 支持两种独立的身份验证方案:OAuth 2.0 和使用 API 密钥的 HTTP 基本身份验证。

在实践中,根据Asana 文档,客户端应该通过:

API 密钥作为用户名,密码为空

因此,如果您想在普通的 Objective-C 中执行这样的请求,例如,NSURLConnection您需要做的就是Authorization自己创建此标头,注意使用空密码。您应该可以轻松做到这一点(请参阅此答案):

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诸如此类的类别实现

于 2013-06-21T07:44:00.990 回答