Я получаю ошибку аутентификации с сообщением json - PullRequest
0 голосов
/ 07 февраля 2020

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

Модель запроса

Метод: Post, Конечная точка: / api / authenticate, переменные заголовка: [{"key": "Content-Type", "value": "application / json", "enabled": true}], параметры тела: имя пользователя: строка, пароль: строка, authenticationType: строка

Пример запроса

POST /api/authenticate 
Host: mpop-sit.hepsiburada.com
Content-Type: application/json
{
   "username": "xyz_dev",
   "password": "XYZ_dev123!",
   "authenticationType": "INTEGRATOR"
}

Запрос отправлен

$url = 'https://mpop-sit.hepsiburada.com//api/authenticate';
$ch = curl_init($url);
$header = array(
    'Content-Type: application/json',
    'Authorization: Bearer '. base64_encode('xyz_dev:XYZ_dev123!:INTEGRATOR'),
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
$return=json_decode($result,true);
print_r($return);

Это результат запрос возвращен и ошибка, которую я получил. Как вы думаете, где я мог ошибиться?

Array ([timestamp] => 2020-02-07T09: 01: 47.426 + 0000 [status] => 500 [error] => Internal) Ошибка сервера [исключение] => io.jsonwebtoken.MalformedJwtException [message] => Строки JWT должны содержать ровно 2 символа периода. Найдено: 0 [путь] => // api / authenticate)

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Это должно работать нормально! Я получаю сообщение об отказе в доступе, поэтому это означает, что коды работают нормально.

Обратите внимание, что вам может потребоваться изменить http_build_query($fields) на $fields

$url = "https://mpop-sit.hepsiburada.com/api/authenticate/";
$token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
$fields = array(
   "username" => "xyz_dev",
   "password" => "XYZ_dev123!"
);

$header = array(
    'Content-Type: application/json',
    'Authorization' => 'Bearer ' . $token,
);

//open curl connection
$ch = curl_init();

//set the url, fields, vars
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); // SSL false if not required
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //False if not required
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//execute fields
$result = curl_exec($ch);
//return result echo $result; if you need
echo curl_error($ch);
//close curl connection
curl_close($ch);

Пожалуйста, дайте мне знать, если это работает!

ОБНОВЛЕНИЕ: , если вы хотите использовать ssl, который спасает вас от хаков.

Выполните шаги в этом ответе, чтобы активировать ssl: { ссылка }

0 голосов
/ 07 февраля 2020

Вам нужен заголовок аутентификации для этой конечной точки?

Так как образец запроса требует, чтобы вы отправляли параметры в теле запроса следующим образом:

$post = [
   'username' => 'xyz_dev',
   'password' => 'XYZ_dev123!',
   'authenticationType' => 'INTEGRATOR'
];

$url = 'https://mpop-sit.hepsiburada.com//api/authenticate';
$ch = curl_init($url);
$header = array('Content-Type: application/json');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
$return=json_decode($result,true);
print_r($return);

Так что нет необходимости в заголовке Authentication: Bearer ..., он также будет создан по-другому.

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