На основе классов @Tim Hall VBA-Web oAuth1 Authenticator я создаю свой собственный аутентификатор для получения токена oAuth1. С аутентификатором все работает хорошо, но я не получаю ожидаемого ответа или не могу сделать правильный веб-запрос. Ниже приведен код того, как я делаю веб-запрос.
Public strAuthHeader As String
Const sURL = "https://openapi.etsy.com/v2/oauth/request_token?scope=transactions_r"
Private Property Get EtsyLoginURL() As WebClient
Dim pEtsyLoginURL As WebClient
If pEtsyLoginURL Is Nothing Then
Set pEtsyLoginURL = New WebClient
pEtsyLoginURL.BaseUrl = sURL
Dim Auth As New EtsyLoginURLGenerator
Auth.Setup _
ConsumerKey:="xxxxxxxxxxxxxxxxxxxxxxx", _
ConsumerSecret:="xxxxxxxxxxxx", _
Token:="", _
TokenSecret:=""
Set pEtsyLoginURL.Authenticator = Auth
End If
Set EtsyLoginURL = pEtsyLoginURL
End Property
Public Function GetURL(Optional Callback As String = "") As WebResponse
Dim myRequest As New WebRequest
With myRequest
.Format = WebFormat.FormUrlEncoded
.Method = HttpGet
.ResponseFormat = WebFormat.Json
End With
Set GetURL = EtsyLoginURL.Execute(myRequest)
End Function
Sub GetLoginURL()
Dim myRes As WebResponse
Dim sResult As String
Dim myC As WebClient
strAuthHeader = ""
'On Error Resume Next 'Uncomment to bypass
Set myRes = GetURL()
'On Error GoTo 0 'Uncomment to bypass
Dim XML As MSXML2.xmlHttp
Set XML = New MSXML2.xmlHttp
XML.Open "GET", sURL, False
XML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XML.setRequestHeader "Authorization", strAuthHeader
XML.Send
sResult = XML.ResponseText
Debug.Print sResult & vbCrLf & Right(UrlDecode(sResult), Len(UrlDecode(sResult)) - InStr(UrlDecode(sResult), "="))
Set XML = Nothing
End Sub
Когда я запускаю модуль GetLoginURL (), код не работает на Set GetURL = EtsyLoginURL.Execute(myRequest)
с сообщением об ошибке ниже:
ОШИБКА - WebClient.Execute: -2147210493 (11011 / 80042b03). Произошла ошибка во время выполнения -2147012739 (80072f7d): произошла ошибка в поддержке безопасного канала.
Я почти уверен, что мой Authenticator работает хорошо. Если я сделаю это жестким способом, просто проигнорируя ошибку и передав заголовок и подпись, созданные аутентификатором, в запрос MSXML2.xmlHttp, он вернет токен. Так что это должно быть связано с веб-запросом или веб-ответом. Но я понятия не имею, что не так в данный момент, надеюсь, кто-нибудь может помочь указать на это. Заранее спасибо.