我有一个问题,当我通过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;
}
我将代码存储在数据库中,从那里抓取并尝试使用它们,在我进行oauth之后,身份验证代码可以正常工作,但是我需要能够刷新访问令牌才能查询UBER api对于我的Webhook上已准备好收据的帖子,如果令牌已过期,则无法使用我拥有的当前身份验证令牌(承载者令牌)访问呼叫
这是我每次得到的答复:
[error] => invalid_grant
答案 0 :(得分:0)
我在数据库中错误地存储了刷新令牌:长度大于我在其下存储的令牌。例如:我正在存储varchar(100),我将其设置为varchar(255),现在它就像一个奇迹。