gpt4 book ai didi

javascript - 来自 GoogleAPI 的 JWT 的 Oauth2 token 响应 "invalid_grant"

转载 作者:行者123 更新时间:2023-11-30 00:26:40 26 4
gpt4 key购买 nike

我已经从 Google API 控制台启用了一个服务帐户来执行 双足 OAuth 以调用 Google Analytics API。我正在使用 JavaScript 并遵循了 pure JavaScript implementation of JWT and JWS生成签名的 JWT 并按照 guide 中的描述对 token 进行 HTTP/REST 调用.使用 encodedURL 进行 POST 后,我会收到 400“error”:“invalid_grant”。 "error_description": "错误请求"

我阅读了一些帖子以确保在请求中包含电子邮件而不是 client_id。我确定情况确实如此,从那时起谷歌更新了他们的文档。

有什么想法吗?如有必要,我也会发布代码,但我主要关注 Rothrock在此 link 的帖子.

我在 http://jwt.io/ 上尝试了签名的 JWT它说这是无效的签名。 payloadheader 正确解码。 Google API控制台提供的私钥编码后,有没有办法测试签名?

这是我的代码:

  var pHeader = {"alg":"RS256", "typ":"JWT"};
var sHeader = JSON.stringify(pHeader);
var pClaim ={};
pClaim.iss = "(ServiceAccount_Email_Address).apps.googleusercontent.com";
pClaim.scope = "https://www.googleapis.com/auth/analytics.readonly";
pClaim.aud = "htps://www.googleapis.com/oauth2/v3/token";
pClaim.exp = KJUR.jws.IntDate.get("now + 1hour");
pClaim.iat = KJUR.jws.IntDate.get("now");

var sClaim = JSON.stringify(pClaim);

var key = "-----BEGIN PRIVATE KEY----- Private Key from JSON file ----END PRIVATE KEY-----";

var sJWS = KJUR.jws.JWS.sign('RS256', sHeader, sClaim, key);
var urlEncodedData = '';
var urlEncodedDataPairs = [];
var token;
urlEncodedDataPairs.push("grant_type" + '=' + "urn:ietf:params:oauth:grant-type:jwt-bearer");
urlEncodedDataPairs.push("assertion" + '=' + sJWS);
urlEncodedData = urlEncodedDataPairs.join('&').replace(/%20/g,'+');

$(function(){
$.ajax({
type: "POST",
url: 'https://www.googleapis.com/oauth2/v3/token',
data: urlEncodedData,
dataType: 'JSON',
contentType: 'application/x-www-form-urlencoded',
success: function(result){
console.log(JSON.stringify(result));
}
});
});

最佳答案

我之前找到了这个问题的答案,但想把它贴在这里进行澄清。上面代码中的所有内容都是正确的。提供的 SSH key 中有一些有效的 \n 字符。我的 key 在 -----BEGIN PRIVATE KEY----- 和实际 key 字符串的开头之间有一行。

关于javascript - 来自 GoogleAPI 的 JWT 的 Oauth2 token 响应 "invalid_grant",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com