Google api 谷歌服务账户;无效的JWT签名";

Google api 谷歌服务账户;无效的JWT签名";,google-api,google-oauth,webdna,Google Api,Google Oauth,Webdna,我正试图在webDNA中编写一些代码来连接到GoogleDrive api。对于给定的问题,使用服务帐户似乎是最好的解决方案。从我所读到的过程是。。。创建JWT,将JWT发送到google以获取令牌响应,然后将获取的响应发送到调用api方法。我相信我的问题在于私钥 我构建并加密标头: [text]header={"alg":"RS256","typ":"JWT"}[/text] [text]header=[encrypt method=Base64][header][/encrypt][/tex

我正试图在webDNA中编写一些代码来连接到GoogleDrive api。对于给定的问题,使用服务帐户似乎是最好的解决方案。从我所读到的过程是。。。创建JWT,将JWT发送到google以获取令牌响应,然后将获取的响应发送到调用api方法。我相信我的问题在于私钥

我构建并加密标头:

[text]header={"alg":"RS256","typ":"JWT"}[/text]
[text]header=[encrypt method=Base64][header][/encrypt][/text]
[text]header=[db_base64URL varName=header][/text][!]custom function to deal with special characters[/!]
下一步构建并加密声明(为可读性添加了空白):

这些章节似乎是正确的,现在来构建签名:

[text]p_key=-----BEGIN PRIVATE KEY-----xxxx-----END PRIVATE KEY-----\n[/text]
[text]sig=[encrypt method=SHA256][header].[claim].[p_key][/encrypt][/text]
[text]sig=[encrypt method=Base64][sig][/encrypt][/text]
[text]sig=[db_base64URL varName=sig][/text]
我尝试过将[p_密钥]在sha256加密之外和内部移动,有“.”和没有“.”,直到我尝试使用[TCPConnect]和[TCPSend]将其发送到google,我才发现错误:

[text show=T]response=[!]
[/!][TCPconnect host=accounts.google.com&SSL=T&port=443][!]
[/!][TCPsend skipheader=T]POST /o/oauth2/token HTTP/1.1[crlf][!]
[/!]Host: accounts.google.com[crlf][!]
[/!]Content-Type: application/x-www-form-urlencoded[crlf][!]
[/!]Content-Length: [countchars][sendData][/countChars][crlf][!]
[/!]Connection: close[crlf][!]
[/!][crlf][!]
[/!][sendData][crlf][!]
[/!][/TCPsend][!]
[/!][/TCPconnect][/text]
当显示响应时,它显示为:

{
  "error": "invalid_grant",
  "error_description": "Invalid JWT Signature."
}
这个错误信息没有那么有用,从我所读到的内容来看,它可能意味着许多事情中的一件(或多件),而谷歌关于这件事的文档并不完全有用。如果有人有通过webDNA使用谷歌API的经验,我将非常感谢您的帮助

{
  "error": "invalid_grant",
  "error_description": "Invalid JWT Signature."
}