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

问题描述

我们目前有一个访问数据库,并正在尝试使用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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)