J'ai essayé VBA-Web pour l'authentification de l'API Upwork. Malheureusement, je ne connais rien de nouveau à oAuth et les exemples d'utilisation de l'authentification VBA-Web sont basés sur des classes conçues pour des API avec un flux d'authentification très différent.
Je suis bloqué à la toute première étape - obtenir un jeton de demande. D'après ce que j'ai remarqué, dans les exemples VBA-Web, il est traité comme une chaîne déjà connue:
Upwork API oAuth documentation
J'ai trouvé des fonctions qui me permettent de générer un timestamp et un nonce corrects. D'après la documentation oAuth 1.0, je comprends que les paramètres de ma demande doivent être triés par ordre alphabétique. Cependant, je ne sais pas comment construire une signature, en particulier cette authBase
fonction de création de Base String ( variable dans mon code qui est pour le moment nulle) dans VBA-Web nécessite la spécification d'un jeton.
Voici mon code actuel, toute aide pour me guider dans la bonne direction est grandement appréciée:
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
la source