Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I have no problems calling out to OAuth 1.0. Here's some sample Apex for signing your request:</p> <p>EDIT: Added additional code</p> <pre><code>private Map&lt;String,String&gt; getUrlParams(String value) { Map&lt;String,String&gt; res = new Map&lt;String,String&gt;(); if(value==null || value=='') { return res; } for(String s : value.split('&amp;')) { List&lt;String&gt; kv = s.split('='); if(kv.size()&gt;1) { res.put(kv[0],kv[1]); } } return res; } private String createBaseString(Map&lt;String,String&gt; oauthParams, HttpRequest req) { Map&lt;String,String&gt; p = oauthParams.clone(); if(req.getMethod().equalsIgnoreCase('post') &amp;&amp; req.getBody()!=null &amp;&amp; req.getHeader('Content-Type')=='application/x-www-form-urlencoded') p.putAll(getUrlParams(req.getBody())); String host = req.getEndpoint(); Integer n = host.indexOf('?'); if(n &gt; -1) { p.putAll(getUrlParams(host.substring(n+1))); host = host.substring(0,n); } List&lt;String&gt; keys = new List&lt;String&gt;(); keys.addAll(p.keySet()); keys.sort(); String s = keys.get(0)+'='+p.get(keys.get(0)); for(Integer i=1; i&lt;keys.size(); i++) s = s + '&amp;' + keys.get(i) + '=' + p.get(keys.get(i)); return req.getMethod().toUpperCase() + '&amp;' + EncodingUtil.urlEncode(host, 'UTF-8') + '&amp;' + EncodingUtil.urlEncode(s, 'UTF-8'); } public void sign(HttpRequest req) { nonce = String.valueOf(Crypto.getRandomLong()); timestamp = String.valueOf(DateTime.now().getTime() / 1000); refreshParameters(); String s = createBaseString(parameters, req); Blob sig = Crypto.generateMac('HmacSHA1', Blob.valueOf(s), Blob.valueOf(consumerSecret+'&amp;'+ (tokenSecret!=null ? tokenSecret : ''))); signature = EncodingUtil.urlEncode(EncodingUtil.base64encode(sig), 'UTF-8'); String header = 'OAuth '; for (String key : parameters.keySet()) { header = header + key + '="'+parameters.get(key)+'", '; } header = header + 'oauth_signature="'+signature+'"'; req.setHeader('Authorization',header); } </code></pre> <p>This might be reaching, but could there be a case-sensitivity issue? Notice I'm calling 'HmacSHA1' not 'hmacSHA1'</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload