Как обновить access_token для Uber с refresh_token - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблема, когда я генерирую первый ответ oauth через uber api, я получаю всю необходимую информацию (access_token, refresh_token)

Но когда я хочу обновить access_token для конкретного пользователя, яполучить invalid_grant (я знаю, что это означает, что срок действия маркера обновления истек, но я генерирую коды и вначале пытаюсь завершиться ошибкой, даже если коды все еще действительны)

это код, который я использую для обновления токена,Может кто-нибудь объяснить, почему он не может дать мне новый код?

function refreshToken()
{
    $url = 'https://login.uber.com/oauth/v2/token';
    $fields = array(
        'client_id' => MY_CLIENT_ID,
        'client_secret' => MY_CLIENT_SECRET,
        'grant_type' => "refresh_token",
        'refresh_token' => MY_REFRESH_TOKEN
    );

    $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_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);

    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

У меня есть коды, хранящиеся в базе данных, возьмите их и попробуйте использовать их оттуда, код авторизации работает нормально послея прошу, но мне нужно иметь возможность обновить токен доступа, чтобы запросить API UBER для получения сообщения о готовности получения на моем веб-крюке, если токен истек, я не могу получить доступ к вызову с помощью текущего токена аутентификации, который у меня есть (токен на предъявителя)

это ответ, который я получаю каждый раз:

[error] => invalid_grant

1 Ответ

0 голосов
/ 19 февраля 2019

Я неверно хранил токен обновления в базе данных: длина была больше той, под которой я хранил.Например: я хранил varchar (100), я установил его на varchar (255), теперь он работает как чудо.

...