成功获取授权码后,我在尝试访问Google Calendar API时无法将其换成访问令牌和刷新令牌。我找不到错误404。这是我的代码:
Dim getTokenUrl As String
getTokenUrl = "https://accounts.google.com/o/auth2/token"
Dim getTokenBody As String
getTokenBody = "code=" & code & _
"&redirect_uri=urn:ietf:wg:oauth:2.0:oob" & _
"&client_id=xxxxxxx-xxxxxxxx.apps.googleusercontent.com" & _
"&client_secret={myLittleSecret}" & _
"&grant_type=authorization_code"
Dim Http As MSXML2.XMLHTTP60
Set Http = CreateObject("MSXML2.XMLHTTP.6.0")
With Http
.Open "POST", getTokenUrl, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send(getTokenBody)
End With
Do While Http.ReadyState <> 4
Loop
Debug.Print Http.responseText
我还尝试将所有内容放在.Open方法的url参数中,而在.Send方法中没有任何内容:
Dim getTokenUrl As String
getTokenUrl = "https://accounts.google.com/o/oauth2/token&code=" & code & "&client_id=xxxxxx-xxxxxx.apps.googleusercontent.com&client_secret={myLittleSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code"
Dim Http As MSXML2.XMLHTTP60
Set Http = CreateObject("MSXML2.XMLHTTP.6.0")
With Http
.Open "POST", getTokenUrl, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send("")
End With
我尝试过使用WinHttp.WinHttpRequest而不是MSXML2.XMLHTTP。
我尝试使用http://localhost
而不是urn:ietf:wg:oauth:2.0:oob。
我试过制作http://localhost
和urn:ietf:wg:oauth:2.0:oob url encoded。
全部给出错误404未找到。
有人可以帮助我指出正确的方向吗?
答案 0 :(得分:1)
终于想通了 -
我使用的网址错误 - 一个字母类型-o / forehead-slap /
而不是:
Dim getTokenUrl As String
getTokenUrl = "https://accounts.google.com/o/auth2/token"
应该是:
Dim getTokenUrl As String
getTokenUrl = "https://accounts.google.com/o/oauth2/token"
请注意oauth2
而非auth2
Geesh。有时我只需要更多的睡眠。
顺便说一下,当我只在.Open请求中放入基本URL而在.send()中放入参数时,我只能将它工作(而不是将它们全部串在一起写入一个URL和&#34; POST& #34; ing))。
现在像魅力一样工作!