Страница 1 из 1

Authorization failed при использовании API для отправки СМС

СообщениеДобавлено: 26 дек 2012, 22:42
kivar21
function BuildUrlParamsWithSignature($params, $password)
{
ksort($params);
$url = '';
if (!is_array($params))
return $url;
foreach($params as $key => $value)
{
$url .= $key . "=" . urlencode($value) . "&";
}
$signature = md5($url . "&password=".urlencode($password));
$url .= "signature=" . $signature;
return $url;
}

$link = "http://api.comtube.ru/scripts/api/sms.php";

$params = array
(
'action' => 'send',
'charset' => 'utf-8',
'message' => $text,
'number' => $number,
'report_to' => 'asdf@yandex.ru',
'senderid' => $number2,
'type' => 'json',
'username' => $login,
);

$params['signature'] = BuildUrlParamsWithSignature($params, $pass);

$url = $link.'?';
$params_url = array();
foreach ($params as $key => $value)
{
$params_url[] = $key.'='.$value;
}
$url .= implode("&", $params_url);
//print $url;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

Re: Authorization failed при использовании API для отправки

СообщениеДобавлено: 26 дек 2012, 22:43
kivar21
Пишет "401 Authorization failed".
Что не так?

Re: Authorization failed при использовании API для отправки

СообщениеДобавлено: 27 дек 2012, 10:08
sd
Так у вас делаются лишние действия. Хватит и этого:

Код: Выделить всё
$link = "http://api.comtube.ru/scripts/api/sms.php";

$params = array
(
'action' => 'send',
'charset' => 'utf-8',
'message' => $text,
'number' => $number,
'report_to' => 'asdf@yandex.ru',
'senderid' => $number2,
'type' => 'json',
'username' => $login,
);

$url = $link . "?" . BuildUrlParamsWithSignature($params, $pass);


Дело в том, что BuildUrlParamsWithSignature формирует строку с параметрами и подписью. Результат надо просто добавить к базовому URL'у.

Re: Authorization failed при использовании API для отправки

СообщениеДобавлено: 27 дек 2012, 10:36
kivar21
Спасибо, теперь все ок.