· 7 years ago · Feb 01, 2018, 05:30 AM
1Dim iURLParameters As String = "" & _
2 "oauth_version=" & iAC_oauth_version & _
3 "&oauth_nonce=" & iAC_oauth_nonce & _
4 "&oauth_timestamp=" & iAC_oauth_timestamp & _
5 "&oauth_signature_method=" & iAC_oauth_signature_method & _
6 "&oauth_consumer_key=" & iAC_oauth_consumer_key & _
7 "&oauth_token=" + iAC_oauth_token '& _
8 '"&oauth_verifier=" & iQB_OAuthVerifier
9
10 Dim iOnlyParams As String = UrlEncode(iURLParameters)
11 iBuildSignatureStr &= iOnlyParams ' FINISH BUILDING SIGNATURE BASE BY ADDING LAST PARAM PIECE
12 iOnlyParams = "get_access_token?" & iOnlyParams ' USED FOR COMBINING URLS BELOW
13
14 'Dim hmac As New HMACSHA256(Convert.FromBase64String(iAC_oauth_signature_method))
15 Dim locallyGeneratedSignatureInBytes As Byte() = hmacsha1.ComputeHash(Encoding.ASCII.GetBytes(iBuildSignatureStr))
16
17 ' ---------------------------------------------------------------
18 ' TURN BASE INTO SIGNATURE -------
19 iFullOAUTHSIGN = GenerateSignatureUsingHash(UrlEncode(iBuildSignatureStr), HMACSHA1)
20
21 ' ---------------------------------------------------------------
22 ' THIS SIGNATURE IS ALL IN ONE
23 Dim MyComboURL As Uri = New Uri(myUri, iOnlyParams)
24 Dim iOAUTHSIGNATURE As String = GenerateSignature(MyComboURL, iAC_oauth_consumer_key, iAC_oauth_consumer_secret, iAC_oauth_token, iAC_oauth_tokensecret, "POST", iAC_oauth_timestamp, iAC_oauth_nonce, "https://oauth.intuit.com/oauth/v1/get_access_token?", iURLParameters)
25
26 ' ---------------------------------------------------------------
27 ' BUILD BASE THEN GENERATE SIGNATURE FROM THE BASE USING THESE FUNCTIONS
28 Dim iOAUTHSIGNBASE = GenerateSignatureBase(MyComboURL, iAC_oauth_consumer_key, iAC_oauth_token, iAC_oauth_tokensecret, "POST", iAC_oauth_timestamp, iAC_oauth_nonce, iAC_oauth_signature_method, "https://oauth.intuit.com/oauth/v1/get_access_token?", iURLParameters)
29 Dim iFULLiOAUTHSIGNBASE As String = GenerateSignatureUsingHash(iOAUTHSIGNBASE, HMACSHA1)
30
31Private Function ComputeHash(hashAlgorithm As HashAlgorithm, data As String) As String
32 If hashAlgorithm Is Nothing Then
33 Throw New ArgumentNullException("hashAlgorithm")
34 End If
35
36 If String.IsNullOrEmpty(data) Then
37 Throw New ArgumentNullException("data")
38 End If
39
40 Dim dataBuffer As Byte() = System.Text.Encoding.ASCII.GetBytes(data)
41 Dim hashBytes As Byte() = hashAlgorithm.ComputeHash(dataBuffer)
42
43 Return Convert.ToBase64String(hashBytes)
44End Function