У меня очень странная ошибка, которую я пытался решить несколько дней, но безуспешно.У меня есть метод getAuthorizationKey()
, который получает ключ авторизации от Registry
, если он существует, или отправляет запрос на вход в API для его получения (кстати, это всегда один и тот же ключ).Получив этот ключ, я могу использовать его для отправки запроса в другую конечную точку API.
Так работает мой метод getAuthorizedKey()
.
protected function getAuthorizationKey()
{
if (is_null($this->_registry->registry(self::AUTH_KEY))) {
$authKey = $this->get(
self::LOGIN_ENDPOINT,
[
'username' => $this->helper->getApiUsername(),
'password' => $this->helper->getApiPassword()
]
);
$this->_registry->register(self::AUTH_KEY, $authKey);
}
return $this->_registry->registry(self::AUTH_KEY);
}
Так работает мой метод get
выглядит (я не присваиваю $query['key']
дважды, я просто использую его для демонстрации).Я уже пытался зарегистрировать его значение в обеих ситуациях на каждой конечной точке.
public function get($endpoint, $query = [])
{
if (self::LOGIN_ENDPOINT !== $endpoint) {
$query['key'] = $this->getAuthorizationKey(); // this never works
$query['key'] = '<KEY>' // this always works
}
$response = $this->request($this->helper->getApiUrl($endpoint), Request::METHOD_GET, $query);
$responseBody = $this->jsonHelper->unserialize($response->getBody());
return empty($responseBody) ? [] : $responseBody;
}
Теперь проблема в том, что только значение ключа жесткого кода возвращает данные из API, но когда я пытаюсь использовать ключ, которыйЯ получаю из метода getAuthorizationKey (), по какой-то причине я всегда получаю ошибку Service: Method not allowed
(это API на основе ASP.NET).Я пытался сделать var_dump($this->getAuthorizationKey() === '<KEY>')
, и он всегда оценивается в true
.В ключе нет специальных символов, только цифры, символы и тире.
Я попытался записать результаты обоих методов, чтобы посмотреть, добавлено ли значение в Registry
, и все выглядит хорошо.