[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: API через Curl
Kusss
Пытаюсь отправить заголовок авторизации, но что-то не пойму как это сделать.
вот из мануала
Цитата
Процесс авторизации

Urlавторизации: https://e-solution.pickpoint.ru/auth/oauth2/token
Http Метод: POST
Content-Type: application/x-www-form-urlencoded
Данные формы:
  тут что передавать
Пример:
• Запрос
client_id={testGuid}&client_secret={base64Encoded}&grant_type=password&username=test& ; ;password=test
• Ответ:
{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ","token_type":"bearer","expires_in":8639 9}
С этим всего хорошо, авторизация получена - результат записал в файл

далее написано следующее
Цитата
Для авторизации необходимо добавлять в Header запросов заголовок Authorization, содержащий следующие данные: "{Token_type} {Token}"

и

ВНИМАНИЕ!
Для всех запросов, требующих авторизации необходимо добавлять заголовок Authorization, с указанием действующего токена. При отсутствии, либо истечении срока годности, токена будет возвращаться ответ: HTTP/1.1 401 Unauthorized


Добавляю заголовок, но он не проходит
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization' => $header_array['token_type'].' '.$header_array['access_token'] ] );


С этим заголовком и без него получаю ответ
    [error] => Array
(
[code] =>
[message] => Authorization has been denied for this request.
)


И что делать - не знаю.
AllesKlar
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization' => $header_array['token_type'].' '.$header_array['access_token'] ] );


заменить на
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: ' . $header_array['token_type'].' '.$header_array['access_token'] ] );


или вот, пользуйся. Из боевого проекта.
Свернутый текст

class ClCurl {

    public $method;
    public $uri;
    public $data;
    public $headers;
    public $ch;

    public function __construct($method, $uri) {
        $this->method = $method;
        $this->uri = $uri;
        $this->headers = [];

        return $this->ch = curl_init();
    }

    public function setAuthorization($token) {
        $this->headers[] = 'Authorization: Bearer ' . $token;
    }

    public function setData($data) {
        if (!empty($data)) {
            curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);
            $this->headers[] = 'Content-Type: application/json';
            $this->headers[] = 'Content-Length: ' . strlen($data);
        }
        $this->data = $data;
    }

    public function doRequest() {
        if (!empty($this->ch)) {
            switch ($this->method) {
                case 'GET' :
                    curl_setopt($this->ch, CURLOPT_URL, $this->uri);
                    break;
                case 'PUT':
                    curl_setopt($this->ch, CURLOPT_URL, $this->uri);
                    curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, 'PUT');
                    break;
            }
            curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 10);

            if (!empty($this->headers)) {
                curl_setopt($this->ch, CURLOPT_HTTPHEADER, $this->headers);
            }


            $response = curl_exec($this->ch);
            $error = curl_error($this->ch);
            $statusCode = curl_getInfo($this->ch, CURLINFO_HTTP_CODE);
            curl_close($this->ch);

            return ['http_code' => $statusCode, 'error' => $error, 'response' => $response];
        }
    }

}



_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.