У меня здесь довольно дилемма, пока я тестирую песочницу Uber, используя URI перенаправления на http://localhost, функция ниже работает отлично и возвращает токен доступа, и я могу использовать все их вызовы API без ошибок.
НО, когда я пытаюсь изменить URI перенаправления на API с https, функция ниже больше не работает, вся информация поступает так же, как и для локального хоста, но когда выполняется CURL, я получаю
{"error":"invalid_request"}
и следующий код - это функция, которую я использую для этого:
function fetchUrl($url, $code)
{
$fields = array(
'client_id' => "MY_CLIENT_ID",
'client_secret' => "MY_CLIENT_SECRET",
'grant_type' => "authorization_code",
'code' => $code
);
$fields_string = '';
foreach ($fields as $key => $value) {
$fields_string .= $key . '=' . $value . '&';
}
$fields_string = rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//up to this point works for HTTPS redirect uri
$result = curl_exec($ch); //the second this runs, i get
//{"error":"invalid_request"}
curl_close($ch);
return $result;
}
для функции выше:
параметр $url установлен на https://login.uber.com/oauth/v2/токен
и $code устанавливается на то, что я получаю после того, как oauth проходит и возвращает необходимый код (код получен в 100% попыток).
Любая помощь приветствуется! Заранее спасибо!
uri перенаправления находится на странице панели управления uber, когда вы создаете там приложение, вам нужно добавить uri перенаправления, если для него установлено значение локальный хост, оно работает нормально, но второй раз, чтобы отправить его на my-api.com/file_with_the_code_from_localhost, он больше не работает
Я знаком с этой концепцией (хотя и не с Uber API). Вероятно, URI перенаправления должен соответствовать источнику запроса. Так ли это?
да, это так, вся информация для OAUTH возвращается, внутри этого есть код, который должен использоваться для всех их вызовов API, ну, этот код не возвращается, если я не укажу перенаправление на мой локальный хост






Я нашел решение здесь, $code следует использовать только один раз для создания access_token и refresh_token, которые позже будут использоваться для обновления access_token.
Моя ошибка заключалась в том, что я пытался генерировать токен каждый раз, когда я использовал метод от uber, который не нужен, если вы выполните шаги из этой ссылки https://developer.uber.com/docs/riders/guides/authentication/user-access-token вы можете быть уверены, что это будет работать просто отлично!
Что такое URI перенаправления? Где это в вашем коде?