Добавление переменных для метода GET с помощью curl - PullRequest
2 голосов
/ 23 января 2011

Я пишу RESTful API для моего веб-сервиса.
Когда я получаю запрос на сервер, первым делом я проверяю appKey и appSecret.
Это не проблема с методами POST, потому что я могу добавить их в запрос следующим образом:
(Этот метод возвращает данные пользователя)

$data = array('appId'=>$appId, 
              'appSecret'=>$appSecret,
              'userId'=>$uid);
$url = "http://mydomain.com/api/user/".$uid;
$request = curl_init($url);
curl_setopt($request, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($request);

Мой вопрос: как я могу (если это возможно) включить данные (appSecret, appKey) в метод GET?

А если нет, то как я могу использовать метод GET для получения сведений о пользователе и при этом проверить appKey и appSecret на сервере?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 23 января 2011

В запросе GET аргументы передаются в разделе «запрос» URL-адреса.

http://www.google.com/search?q=url+query

Аргументы, передаваемые таким образом, должны быть специально закодированы («URL-кодировка»), поскольку определенные символы имеют особое значение.

2 голосов
/ 23 января 2011

Почему бы не поместить их в свой URL, например:

$ url = "http://mydomain.com/api/user/".$uid."?arg1=value1&arg2=value2";

1 голос
/ 01 февраля 2011

Если вы хотите поместить appKey и appSecret в заголовок запроса GET, используйте:

$authorization = sprintf('Authorization: AppLogin key="%s", secret="%s"', urlencode($appKey), urlencode($appSecret));
curl_setopt($request, CURLOPT_HTTPHEADER, array($authorization));

Затем на своем REST-сервере вы можете получить ключ и секретный ключ приложения из $ _SERVER ['HTTP_AUTHORIZATION'] через preg_match.

Вы также можете использовать базовый метод подписи вместо передачи appSecret каждый раз.

$nonce = sha1(mt_rand());
$signature = sha1("$appKey:$appSecret:$nonce");
$authorization = 'Authorization: AppLogin key="%s", signature="%s", nonce="%s"', urlencode($appKey), urlencode($signature), urlencode($nonce));

Затем на сервере сначала получите значения из заголовка авторизации, затем получите секрет, назначенный приложению на основе appKey, затем перестройте подпись с помощью того же метода и, наконец, сравните подпись, отправленную приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...