I use react-native to connect to fat-secret. Heres my code, maybe it will help you or someone else:
var CryptoJS = require('crypto-js/crypto-js');
var OAUTH_CONSUMER_KEY = '*********************************';
var SHARED_SECRET = '*********************************';
var APPLICATION = 'MyApp';
var REQUEST_METHOD = 'GET';
var OAUTH_SIGNATURE_METHOD = 'HMAC-SHA1';
var OAUTH_VERSION = '1.0';
// Optional
var FORMAT = 'json';
module.exports = {
searchRecipes: function(SEARCH_EXPRESSION, RECIPE_TYPE, PAGE_NUMBER, MAX_RESULTS){
var METHOD = 'recipes.search';
var OAUTH_TIMESTAMP = new Date().getTime();
var OAUTH_NONCE = ''+new Date().getTime();
// Create a Signature Base String
var REQUEST_URL_ENCODED = encodeURIComponent(REQUEST_URL);
var NORMALISED_PARAMETERS = 'format='+FORMAT;
if(MAX_RESULTS != null)
NORMALISED_PARAMETERS += '&max_results='+MAX_RESULTS;
NORMALISED_PARAMETERS += '&method='+METHOD;
NORMALISED_PARAMETERS += '&oauth_consumer_key='+OAUTH_CONSUMER_KEY;
NORMALISED_PARAMETERS += '&oauth_nonce='+OAUTH_NONCE;
NORMALISED_PARAMETERS += '&oauth_signature_method='+OAUTH_SIGNATURE_METHOD;
NORMALISED_PARAMETERS += '&oauth_timestamp='+OAUTH_TIMESTAMP;
NORMALISED_PARAMETERS += '&oauth_version='+OAUTH_VERSION;
if(PAGE_NUMBER != null)
NORMALISED_PARAMETERS += '&page_number='+PAGE_NUMBER;
if(RECIPE_TYPE != null)
NORMALISED_PARAMETERS += '&recipe_type='+RECIPE_TYPE;
if(SEARCH_EXPRESSION != null)
NORMALISED_PARAMETERS += '&search_expression='+SEARCH_EXPRESSION;
NORMALISED_PARAMETERS_ENCODED = encodeURIComponent(NORMALISED_PARAMETERS);
var BASE_STRING = `${REQUEST_METHOD}&${REQUEST_URL_ENCODED}&${NORMALISED_PARAMETERS_ENCODED}`;
// Calculate the Signature value
SHARED_SECRET+='&'; // no user, & needed
var OAUTH_SIGNATURE = CryptoJS.HmacSHA1(BASE_STRING, SHARED_SECRET);
var OAUTH_SIGNATURE_BASE64 = CryptoJS.enc.Base64.stringify(OAUTH_SIGNATURE);
var OAUTH_SIGNATURE_BASE64_ENCODED = encodeURIComponent(OAUTH_SIGNATURE_BASE64);
var OAUTH_REQUEST_URL = `${REQUEST_URL}?${NORMALISED_PARAMETERS}&oauth_signature=${OAUTH_SIGNATURE_BASE64_ENCODED}`;
// Send the Request
return fetch(OAUTH_REQUEST_URL)
.then((response) => response.json())
.then((responseData) => {
console.log('responseData');
console.log(responseData);
return responseData;
});
},
getRecipeDetails: function(RECIPE_ID){
var METHOD = 'recipe.get';
var OAUTH_TIMESTAMP = new Date().getTime();
var OAUTH_NONCE = ''+new Date().getTime();
// Create a Signature Base String
var REQUEST_URL_ENCODED = encodeURIComponent(REQUEST_URL);
var NORMALISED_PARAMETERS = 'format='+FORMAT;
NORMALISED_PARAMETERS += '&method='+METHOD;
NORMALISED_PARAMETERS += '&oauth_consumer_key='+OAUTH_CONSUMER_KEY;
NORMALISED_PARAMETERS += '&oauth_nonce='+OAUTH_NONCE;
NORMALISED_PARAMETERS += '&oauth_signature_method='+OAUTH_SIGNATURE_METHOD;
NORMALISED_PARAMETERS += '&oauth_timestamp='+OAUTH_TIMESTAMP;
NORMALISED_PARAMETERS += '&oauth_version='+OAUTH_VERSION;
NORMALISED_PARAMETERS += '&recipe_id='+RECIPE_ID;
NORMALISED_PARAMETERS_ENCODED = encodeURIComponent(NORMALISED_PARAMETERS);
var BASE_STRING = `${REQUEST_METHOD}&${REQUEST_URL_ENCODED}&${NORMALISED_PARAMETERS_ENCODED}`;
// Calculate the Signature value
SHARED_SECRET+='&'; // no user, & needed
var OAUTH_SIGNATURE = CryptoJS.HmacSHA1(BASE_STRING, SHARED_SECRET);
var OAUTH_SIGNATURE_BASE64 = CryptoJS.enc.Base64.stringify(OAUTH_SIGNATURE);
var OAUTH_SIGNATURE_BASE64_ENCODED = encodeURIComponent(OAUTH_SIGNATURE_BASE64);
var OAUTH_REQUEST_URL = `${REQUEST_URL}?${NORMALISED_PARAMETERS}&oauth_signature=${OAUTH_SIGNATURE_BASE64_ENCODED}`;
// Send the Request
return fetch(OAUTH_REQUEST_URL)
.then((response) => response.json())
.then((responseData) => {
console.log('responseData');
console.log(responseData);
return responseData;
});
}
}