2013-06-20 9 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. Он в основном добавляет HTTP-заголовок Authorization к запросу с именем пользователя/паролем, закодированным в 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, если это сработало, вы должны перенести и принять его ответ ;-) Спасибо @deltheil! – agnoster