Отказ от ответственности: 'Только для приложений' Аутентификация с помощью Twitter API, вот ссылка
Мне уже удалось получить токен на предъявителя и активно используйте его на различных конечных точках, доступных в конечных точках API «только для приложений». Теперь я пытаюсь отозвать этот токен на предъявителя или аннулировать токен, чтобы он больше не использовался для вызова каких-либо конечных точек.
Это является конечной точкой для отзыва этого токена Bearer и инструкций по выполнению запроса
Я использовал request модуль для создания и выполнения запрос и oauth-подпись для создания подписи.
//config
const credentials: {
consumer_key: "aqwpoeokqwpoksoqdqwe",
consumer_secret: "qwkejqowijeqowiejqwe"
}
// this is the token that is pass to 'Bearer' header
const myBearerToken = "qwiejqowiejqwoiejqwei" // this is what I'm invalidating
// CREATING A SIGNATURE HERE
// these are the parameters to create a signature
const timestamp = Math.round(Date.now() / 1000) // i saw this on other examples
const method = 'POST',
url= "https://api.twitter.com/oauth2/invalidate_token",
parameters= {
oauth_consumer_key: credentials.consumer_key,
oauth_token: "my_application_access_token",
oauth_signature_method: "HMAC-SHA1",
oauth_nonce: btoa(credentials.consumer_key + ':' + timestamp),
oauth_timestamp: timestamp,
oauth_version: "1.0",
access_token: myBearerToken
},
consumer_secret= credentials.consumer_secret,
token_secret= "my_application_access_token_secret"
// generate a signature
const encodedSignature = oauthSignature.generate(method, url, parameters, consumer_secret, token_secret)
//EXECUTING THE REQUEST
request({
method: 'POST', // this is the http verb Twitter wants
url: `${url}?access_token=${myBearerToken}`, // from above
headers: {
// I intentionally split headers on multiple lines
// I've tried to executing this too in one line
"Authorization": `OAuth oauth_consumer_key="${credentials.consumer_key}"`+
`oauth_nonce="${parameters.oauth_nonce}",oauth_signature="${encodedSignature}",`+
`oauth_signature_method="${parameters.oauth_signature_method}",oauth_timestamp="${parameters.timestamp}",`+
`oauth_token="my_application_access_token",oauth_version="1.0"`
},
function(err,response,body){
// here, I only get a code response error of '99'
// '{"errors":[{"code":99,"message":"Unable to verify your credentials","label":"authenticity_token_error"}]}'
console.log(body)
}
})
Я попытался посмотреть на объект ответа и найти подсказку об ошибке. Я догадываюсь, что я испортил часть подписи, но я действительно не знаю, где смотреть. Вот ссылка для правильной подписи .