title: How to generate oauth_signature intuit ipp QBO API V3
body: <p>I am having some issues with limitations of the .NET SDK and so would like to issue my own calls to the API and parse the JSON results. I am stuck on creating the authorization header parameter oauth_signature as outlined <a href="https://developer.intuit.com/docs/0025_quickbooksapi/0010_getting_started/0020_connect/0010_from_within_your_app/implement_oauth_in_your_app" rel="noreferrer">here</a>.</p>
  
  <p>For this parameter it states: <code>Contains the value generated by running all other request parameters and two secret values through a signing algorithm</code></p>
  
  <ol>
  <li>Does the "two secret values" refer to the OAuthAccessTokenSecret and the consumerSecret?</li>
  <li>Does "all other request parameters" mean just those parameter values? Concatenated?</li>
  <li>How do you use 2 secret values in an and HMACSHA1 signing algorithm? All examples I see just use one</li>
  </ol>
  
  <p>What I have so far.</p>
  
  <pre><code>public static string GetOAuthAuthorization(string oauthToken, string oauthSecret, string consumerKey, string consumerSecret)
          {   
              string oauth_token = oauthToken;
              string oauth_nonce = Guid.NewGuid().ToString();
              string oauth_consumer_key = consumerKey;
              string oauth_signature_method = "HMAC-SHA1";
              int oauth_timestamp = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
              string oauth_version="1.0";
  
              string dataString = oauth_token + oauth_nonce + oauth_consumer_key + oauth_timestamp;
  
              //TODO: use following to create oauth_signature
              byte[] hashkey = Encoding.ASCII.GetBytes(oauthSecret);  //is this one of the secret values?
              byte[] data = Encoding.ASCII.GetBytes(dataString);
              HMACSHA1 hmac = new HMACSHA1(hashkey); 
              byte[] result = hmac.ComputeHash(data);
  
              string oauth_signature=Convert.ToBase64String(result);
  
              return string.Format("OAuth oauth_token='{0}',oauth_nonce='{1}',oauth_consumer_key='{2}',oauth_signature_method='{3}',oauth_timestamp='{4}',oauth_version='{5}',oauth_signature='{6}'",
                  oauth_token, oauth_nonce, oauth_consumer_key, oauth_signature_method,oauth_timestamp,oauth_version, oauth_signature
              );
          }
  </code></pre>