【发布时间】:2014-10-17 15:09:53
【问题描述】:
成功获取授权代码后,我在尝试访问 Google 日历 API 时无法将其交换为访问令牌和刷新令牌。我收到错误 404 Not Found。这是我的代码:
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 编码。
全部给出错误 404 Not Found。
有人可以帮我指出正确的方向吗?
【问题讨论】:
-
嘿 @autoKarma 能否请您发布您用于获取授权码的 VBA 代码?我在任何地方都找不到有关如何执行此操作的明确说明...谢谢!
标签: vba oauth-2.0 google-oauth