0

使用以下 VBA 代码将有效的授权令牌交换为 Google API 中的访问令牌时,我收到“400 错误请求”错误。谁能解释为什么,我已经为此苦苦挣扎了一个多星期。

Dim http As MSXML2.XMLHTTP
Dim sUrl As String
Dim sUrlHeader As String
Dim svarbody As String

Set http = New MSXML2.XMLHTTP

sUrl = "https://accounts.google.com/o/oauth2/token? HTTP/1.1"

http.Open "POST", sUrl


http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

svarbody = "code=4%2FXAjmXiUlBXUAUGCnMvNKsxdyuJEJ.8kfzzrqo3wwTuJJVnL49Cc9gML_lbgI&" & _
"client_id=50487549202#-q27v28nvhmjhc0uobq35tjn09lhrh47r.apps.googleusercontent.com&" &         _
"redirect_uri=http%3A%2F%2Flocalhost&" & _
"scope=https%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds&" & _
"client_secret=<secret delete for this post>&" & _
"grant_type=authorization_code"

http.send svarbody

Me.Text3 = http.status & vbCrLf & http.statusText & vbCrLf & http.responseText
4

3 回答 3

0

根据我在 VBA 中使用 Oauth 2.0 的经验,当您多次使用代码请求令牌时会发生此错误。我根据文档和经验使用的使用顺序是:访问 GET https://accounts.google.com/o/oauth2/auth 一次获取代码访问 POST https://accounts.google.com/o/oauth2 /token 一次用于获取令牌,之后使用令牌,只要它有效

于 2013-05-14T07:52:47.367 回答
0

您可能需要在您的 Google 帐户中设置帐单信息。

于 2014-03-20T06:06:31.557 回答
0

这是一个非常普遍的问题。您可以尝试通过许多方法和测试来解决它......但是......

您应该首先尝试的真正方法是:

更新您的服务器/计算机 WINDOWS 时钟,使用 time.nist.gov(或兄弟)。双击您的 Windows 小时日期(在屏幕底部并以这种方式更改 Internet 时间)

SntsDev

于 2013-02-25T18:23:30.407 回答