Curl, Asana и ObjectiveC

Я собираюсь создать простое приложение какао для создания проектов в приложении для совместной работы 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"?

Спасибо!

Адам


person adamteale    schedule 20.06.2013    source источник


Ответы (1)


Параметр -u/--user означает базовую аутентификацию. По сути, он добавляет к запросу HTTP-заголовок Authorization с именем пользователя и паролем, закодированными в base64, например Authorization: Basic Zm9vOmJhcg==.

Базовая аутентификация - это как раз одна из схем аутентификации, поддерживаемых Asana API:

Asana API поддерживает две отдельные схемы аутентификации: OAuth 2.0 и HTTP Basic Authentication с использованием ключей API.

На практике и в соответствии с документами Asana клиенты должны пройти:

ключ API в качестве имени пользователя и пустой пароль

Итак, если вы хотите выполнить такой запрос на простом Objective-C, например, с помощью _ 4_ все, что вам нужно сделать, это создать этот 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 достигается с помощью NSDatacategory, например this one.

person deltheil    schedule 21.06.2013
comment
Спасибо за вашу помощь! Любые советы о том, как мне передать переменные, как с curl: curl -u myapiKey12345: app .asana.com / api / 1.0 / projects -d name = Test Job -d notes = Test blah. -d рабочая область = 11234456789 -d команда = 12345466778 - person adamteale; 22.06.2013
comment
@adamteale, если это сработало, вы должны проголосовать и принять его ответ ;-) Спасибо, @deltheil! - person agnoster; 24.06.2013