使用VBA的基于令牌的身份验证

时间:2020-08-26 19:56:01

标签: vba ms-access oauth netsuite

我们目前有一个访问数据库,并正在尝试使用TBA连接到API。下面的代码是到目前为止的内容。我们只能使用用户名和密码进行连接,但无法使TBA代码正常工作。任何帮助深表感谢。我已经仔细检查了字符串。


'working code
'reader.Open "GET", "NetSuite API URL, False
'reader.setRequestHeader "Authorization", "NLAuth nlauth_account=****,nlauth_email=***, nlauth_signature=****, nlauth_role=***"


reader.Open "GET", "NetSuite API URL", False

Dim RealmStr As String
Dim ConsumKeyStr As String
Dim ConsumSecStr As String
Dim TokenStr As String

RealmStr = "..."
ConsumKeyStr = "..."
ConsumSecStr = "..."
TokenStr = "..."
TokenSecStr = "..."


Application.Run "CreateHeader", RealmStr, ConsumKeyStr, ConsumSecStr, TokenStr, TokenSecStr
XMLReqStr = Chr$(34) & XMLReqStr & Chr$(34)

reader.setRequestHeader "Authorization", XMLReqStr

reader.setRequestHeader "Content-Type", "application/xml"
reader.Send


Do Until reader.ReadyState = 4
    DoEvents
Loop

这是创建头函数。

Public Function CreateHeader(Realm As String, ConsumerKey As String, ConsumerSecret As String, Token As String, TokenSecret As String) As String
    Dim auth_Nonce As String
    Dim auth_Timestamp As String
    Dim auth_Base As String
    Dim auth_SigningKey As String
    Dim auth_Signature As String
    
    ' create nonce and timestamp
    auth_Nonce = CreateNonce()
    auth_Timestamp = VBA.CStr(VBA.DateDiff("s", #1/1/1970#, ConvertToUtc(VBA.Now)))
    
    ' Create needed parts of authorization header
    auth_Base = CreateBaseString(auth_Nonce, auth_Timestamp, ConsumerKey, Token)
    auth_SigningKey = ConsumerSecret & "&" & TokenSecret
    auth_Signature = HMACSHA256(auth_Base, auth_SigningKey, "Base64")
    
    XMLSignStr = auth_SigningKey
    
    ' Generate header
    CreateHeader = "OAuth "
    
    ' Add realm (if exists)
    'If Realm <> "" Then
    '    CreateHeader = CreateHeader & "realm=" & Realm & ", "
    'End If
    
    If Realm <> "" Then
        CreateHeader = CreateHeader & "realm=" & Chr$(34) & Realm & Chr$(34) & ","
    End If
    
      
     CreateHeader = CreateHeader & "oauth_consumer_key=""" & ConsumerKey & ""","
     CreateHeader = CreateHeader & "oauth_token=""" & Token & ""","
     CreateHeader = CreateHeader & "oauth_signature_method=""HMAC-SHA256"","
     CreateHeader = CreateHeader & "oauth_timestamp=""" & auth_Timestamp & ""","
     CreateHeader = CreateHeader & "oauth_nonce=""" & auth_Nonce & ""","
     CreateHeader = CreateHeader & "oauth_version=""" & "1.0" & ""","
     CreateHeader = CreateHeader & "oauth_signature=""" & UrlEncode(auth_Signature) & """"
   
    
    
    CreateHeader = CreateHeader
    XMLReqStr = CreateHeader
    XMLSignStr = UrlEncode(auth_Signature)
    
End Function

0 个答案:

没有答案
相关问题