【问题标题】:Curl, Asana & ObjectiveC卷曲、体式和目标 C
【发布时间】:2013-06-20 22:38:02
【问题描述】:

我正在考虑构建一个简单的可可应用来在协作应用 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”命令的任何想法?

谢谢!

亚当

【问题讨论】:

    标签: objective-c curl asana


    【解决方案1】:

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

    Basic auth 正是 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 编码是通过NSDatacategory 实现的,例如this one

    【讨论】:

    • 感谢您的帮助!关于如何像使用 curl 一样传递变量的任何提示: curl -u myapiKey12345: app.asana.com/api/1.0/projects -d "name=Test Job" -d "notes=Test blah." -d“工作区=11234456789”-d“团队=12345466778”
    • @adamteale 如果有效,您应该投票并接受他的回答;-) 谢谢@deltheil!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多