Eu tentei VBA-Web para autenticação de API do Upwork. Infelizmente, sou novo no oAuth e os exemplos sobre como usar a autenticação do VBA-Web são baseados em classes projetadas para APIs com fluxo de autenticação bastante diferente.
Estou preso no primeiro passo - obtendo o token de solicitação. Pelo que notei, em exemplos do VBA-Web, ele é tratado como uma string já conhecida:
Documentação UpAuth da API UpAuth
Eu encontrei funções que me permitem gerar timestamp e nonce corretos. Da documentação do oAuth 1.0 entendo que os parâmetros em minha solicitação devem ser classificados em ordem alfabética. No entanto, não tenho idéia de como criar assinaturas, especialmente que a função de criação Base String ( authBase
em meu código, que por enquanto é string nula) no VBA-Web requer a especificação de token.
Aqui está o meu código atual, qualquer ajuda em me levar em uma boa direção é muito apreciada:
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
Tags authentication vba