uber CURL не работает при перенаправлении на https

У меня здесь довольно дилемма, пока я тестирую в песочнице 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/token и $code устанавливается на то, что я получаю после того, как oauth проходит через корыто и возвращает необходимый код (код получен в 100% попыток).

Любая помощь приветствуется! Заранее спасибо!


person Andrei Fiordean    schedule 14.02.2019    source источник
comment
Что такое URI перенаправления? Где это в вашем коде?   -  person marekful    schedule 14.02.2019
comment
uri перенаправления находится на странице панели инструментов uber, когда вы создаете там приложение, вам нужно добавить uri перенаправления, если для него установлено значение localhost, он работает нормально, но второй я должен отправить его на my-api.com/file_with_the_code_from_localhost больше не работает   -  person Andrei Fiordean    schedule 14.02.2019
comment
Я знаком с этой концепцией (хотя и не с Uber API). Вероятно, URI перенаправления должен соответствовать источнику запроса. Так ли это?   -  person marekful    schedule 14.02.2019
comment
да, это так, вся информация для OAUTH возвращается, внутри этого есть код, который должен использоваться для всех их вызовов api, ну, этот код не возвращается, если я не указываю перенаправление на свой localhost   -  person Andrei Fiordean    schedule 14.02.2019


Ответы (1)


Я нашел здесь решение, $code следует использовать только один раз для создания access_token и refresh_token, которые позже будут использоваться для обновления access_token.

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

person Andrei Fiordean    schedule 19.02.2019