Вот мои настройки:
const method = "GET";
const baseUrl = "https://api.twitter.com/1.1/statuses/user_timeline.json";
const percentEncodedBaseUrl = encodeURIComponent(baseUrl);
const count = 200;
const include_rts = 1;
const oAuthConsumerKey = CONFIG.CONSUMER_KEY;
const oAuthNonce = crypto.randomBytes(32).toString("base64");
const oAuthSignatureMethod = "HMAC-SHA1";
const oAuthTimeStamp = moment()
.utc()
.unix();
const oAuthToken = CONFIG.AUTH_TOKEN;
const oAuthVersion = "1.0";
const userId = url.split("/")[3];
const oAuthConsumerSecret = CONFIG.CONSUMER_SECRET;
const signingKey = `${oAuthConsumerSecret}&`;
const paramString = `count=${count}&include_rts=${include_rts}&oauth_consumer_key=${oAuthConsumerKey}&oauth_nonce=${oAuthNonce}&oauth_signature_method=${oAuthSignatureMethod}&oauth_timestamp=${oAuthTimeStamp}&oath_token=${oAuthToken}&oauth_version=${oAuthVersion}`;
const percentEncodedParamString = encodeURIComponent(paramString);
const signatureBaseString = `${method}&${percentEncodedBaseUrl}&${percentEncodedParamString}`;
const oAuthSignature = crypto
.createHmac("sha1", signingKey)
.update(signatureBaseString, "binary")
.digest("base64");
const getActivity = `https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=${userId}&include_rts=${include_rts}&count=${count}`;
const options = {
headers: {
withCredentials: true,
credentials: "include",
Authorization: `OAuth oauth_consumer_key=${oAuthConsumerKey},oauth_token=${oAuthToken},oauth_signature_method=${oAuthSignatureMethod},oauth_signature=${oAuthSignature},oauth_timestamp="${oAuthTimeStamp}",oauth_nonce="${oAuthNonce}",oauth_version=${oAuthVersion}`
}
};
const results = await fetch(getActivity, options);
Я проверил, что не сгенерированные значения, а также сгенерированный одноразовый номер, который я использую, действительны, делая успешные запросы с почтальоном.Я полагаю, что я следовал за API твиттера к T. Моя подпись напоминает подпись примера твиттера, и в моих значениях определенно нет пробелов в начале / конце.
Однако я получаю Status 400 Bad Request
сerror: Bad Authentication data
с этой настройкой.
Есть идеи?