1

Я попробовал VBA-Web для аутентификации Upwork API. К сожалению, я новичок в oAuth, и примеры использования VBA-Web-аутентификации основаны на классах, разработанных для API с совершенно другим потоком аутентификации.

Я застрял на самом первом шаге - получение запроса токена. Из того, что я заметил, в примерах VBA-Web он рассматривается как уже известная строка:

Upwork API oAuth документация

Я нашел функции, которые позволяют мне генерировать правильные метки времени и одноразовые номера. Из документации oAuth 1.0 я понимаю, что параметры в моем запросе должны быть отсортированы в алфавитном порядке. Однако я понятия не имею, как создать сигнатуру, особенно для того, что функция создания базовой строки (переменная authBase в моем коде, которая на данный момент является пустой строкой) в VBA-Web требует указания токена.

Вот мой текущий код, любая помощь в продвижении меня в правильном направлении очень ценится:

Option Explicit

Public Sub APIauth()

   Const ApiKey As String = "XXXXXXXX"
   Const apiSecret As String = "XXXXXXXX"
   Const mySignatureMethod As String = "HMAC-SHA1"
   Const apiEntry = "https://www.upwork.com/api/"

   Dim myRequest As Object
   Dim urlName As String, requestString As String, authBase As String
   Dim mySignature As String, myTimestamp As String, myNonce As String

   Set myRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

   urlName = apiEntry & "auth/v1/oauth/token/request"

   myNonce = CreateNonce
   myTimestamp = LocalToTimestamp(Now)

   authBase = ""
   mySignature = HMACSHA1(authBase, apiSecret, "Base64")

   requestString = "&oauth_consumer_key=" & ApiKey & _
                "&oauth_nonce=" & myNonce & _
                "&oauth_signature=" & mySignature & _
                "&oauth_signature_method=" & mySignatureMethod & _
                "&oauth_timestamp=" & myTimestamp '& _
                "&oauth_callback="
End Sub

0