Forked and updated to use crypto-browserify
for usage on browser compute environments such as Cloudflare Workers
Simple and minimalist module to generate oAuth1.0a authorization header for Twitter API v1.1 and V2.
import dotenv from "dotenv";
dotenv.config();
import axios from "axios";
import oAuth1a from "twitter-v1-oauth";
const oAuthOptions = {
api_key: process.env.TWITTER_API_KEY || "",
api_secret_key: process.env.TWITTER_API_SECRET_KEY || "",
access_token: process.env.TWITTER_ACCESS_TOKEN || "",
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET || "",
};
const url = "https://api.twitter.com/1.1/search/tweets.json";
const method = "GET";
const params = { q: "twitter bot" };
const authorization = oAuth1a({ method, url, params }, oAuthOptions);
axios
.get(url, {
params,
headers: {
authorization,
},
})
.then(({ data }) => console.log(data))
.catch((err) => {
if (err.response) {
return console.log(err.response.data.errors);
}
console.log(err);
});
No dependencies and super small: .
Install
npm install twitter-v1-oauth
Usage
Create an app and get your credentials, you will need:
- API KEY
- API SECRET KEY
- ACCESS TOKEN
- ACCESS TOKEN SECRET
Use your preferred library to send the request using the documented endpoints and parameters for the twitter v1 API.
When making a post request to Twitter API v1.1, the data needs to be encoded and sent as application/x-www-form-urlencoded
. The module exports an encode
function that can be used to properly encode the body before it is send. Check post-tweet for an example.
Whe making a post request to Twitter API v2, the data doesn't need to be encoded and must be sent as application/json
. Check like-v2 for an example.
CommonJS
const authRequest = require("twitter-v1-oauth").default;
ES6 Modules
import oAuthRequest from "twitter-v1-oauth";
TypeScript
Type definitions are included.
Examples
Check the examples directory for ideas on how to use it with axios.
The index.test.ts file should also provide a good idea on its usage.
License
MIT