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