OAuth только для приложений: отзыв токена на предъявителя - PullRequest
0 голосов
/ 01 мая 2020

Отказ от ответственности: 'Только для приложений' Аутентификация с помощью 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)
    }

})


Я попытался посмотреть на объект ответа и найти подсказку об ошибке. Я догадываюсь, что я испортил часть подписи, но я действительно не знаю, где смотреть. Вот ссылка для правильной подписи .

...