Веб-запрос / веб-ответ для получения токена oAuth - PullRequest
0 голосов
/ 05 мая 2020

На основе классов @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, он вернет токен. Так что это должно быть связано с веб-запросом или веб-ответом. Но я понятия не имею, что не так в данный момент, надеюсь, кто-нибудь может помочь указать на это. Заранее спасибо.

...