我有一个问题,当我通过uber api生成第一个oauth响应时,我得到所需的所有信息(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;
}
我有代码存储在数据库中,抓住它们并尝试从那里使用它们,auth-code在i oauth之后工作正常,但是我需要能够刷新访问令牌以便查询UBER api以获取收据在我的webhook上准备好帖子,如果令牌过期我无法使用当前的身份验证令牌(持有令牌)访问该呼叫
这是我每次都得到的回应:
[error] => invalid_grant
我在数据库中存储错误的刷新令牌:长度高于我存储的长度。例如:我正在存储varchar(100),我将它设置为varchar(255),现在它就像一个奇迹。