使用reqwest机箱进行oauth2身份验证-redirect_uri_mismatch



我使用reqwest来使用googleoauth对用户进行身份验证。我已经正确设置了凭据(client_id、secret、redirect_uris(,但我仍然无法交换从谷歌获得的代码来获得令牌。

let mut params = HashMap::new();
params.insert("client_id", &config.web.client_id);
params.insert("client_secret", &config.web.client_secret);
params.insert("grant_type", &grant_type);
params.insert("redirect_uri", &redirect_uri);
params.insert("code", code);
let client = reqwest::blocking::Client::new();
if let Ok(response) = client.post("https://oauth2.googleapis.com/token")
.form(&params)
.send() {
println!("{:?}", response);
}

它总是返回CCD_ 1。用于在身份验证期间检索代码的redirect_uri有效,但用于检索访问和刷新令牌的redirect_uri无效。我在php中有一个类似的web应用程序,使用相同的重定向uri,它可以工作。我就是不能让它生锈。

当我从https://accounts.google.com/o/oauth2/v2/auth端点获取授权代码时,我使用了不同的redirect_uri,而当我发布到https://oauth2.googleapis.com/token以获取访问和刷新令牌时,我则使用了另一个redirect_uri。

事实证明,在检索授权代码和访问令牌时,我不能使用不同的重定向uri。

最新更新