Andrei Fiordean
Andrei Fiordean

Reputation: 223

How to refresh access_token for uber with refresh_token

i have a problem, when i generate the first oauth response via uber api, i get all the information needed(access_token, refresh_token)

But when i wish to refresh the access_token for a specific user, i get invalid_grant(i know that this means the refresh token has expired, but i generate the codes and at first try it fails even if the codes are still valid)

this is the code i use for refreshing the token, can someone please explain why it is failing to give me a new code?

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;
}

I have the codes stored in the database, grab them and try to use them from there, the auth-code works fine after i oauth, but i need to be able to refresh the access token in order to query the UBER api for the receipt ready post on my webhook, if the token is expired i can't access the call with the current auth token i have(bearer token)

this is the response i get every time:

[error] => invalid_grant

Upvotes: 0

Views: 141

Answers (1)

Andrei Fiordean
Andrei Fiordean

Reputation: 223

I was storing the refresh token wrong in the database: the length was higher than the one i was storing under. eg: i was storing varchar(100) , i set it to varchar(255) now it works like a wonder.

Upvotes: 0

Related Questions