2014-10-17 134 views
2

成功獲取授權碼後,我在嘗試訪問Google Calendar API時無法訪問令牌和刷新令牌時遇到問題。我收到錯誤404 Not Found。這裏是我的代碼:使用VBA和Oauth2交換Google Calendar API的訪問令牌的授權碼

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 

我也試圖把一切都在。開法並沒有什麼的方法。發送的網址參數:

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。

有人可以幫助指向正確的方向嗎?

+0

嘿@autoKarma您能否請您發佈用於獲取授權碼的VBA代碼?我無法在任何地方找到明確的說明,謝謝! – Bruder 2015-08-18 16:54:09

回答

1

終於找到它out--

我用錯了的URL - 一個字母O型/前額拍擊/

代替:

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和「POST」中它)。

現在就像一個魅力工作!

相關問題