Ritzy Dev
Ritzy Dev

Reputation: 507

Cannot write using the Twitter API (unsupported authentication)

I'm trying to use twitter-api-v2 to query twitter using their [rate limit example]

import dotenv from 'dotenv'
import { TwitterApi } from 'twitter-api-v2';
import { TwitterApiRateLimitPlugin } from '@twitter-api-v2/plugin-rate-limit'

dotenv.config()

const API_KEY = process.env.TWITTER_API_KEY;
const API_SECRET = process.env.TWITTER_API_SECRET;
const BEARER_TOKEN = process.env.BEARER_TOKEN;

const rateLimitPlugin = new TwitterApiRateLimitPlugin()
// Instantiate with desired auth type (here's Bearer v2 auth)
const twitterClient = new TwitterApi(process.env.BEARER_TOKEN, { plugins: [rateLimitPlugin] });
//const twitterClient = new TwitterApi({ appKey: API_KEY, appSecret: API_SECRET }, { plugins: [rateLimitPlugin] });

await twitterClient.v2.me()

const currentRateLimitForMe = await rateLimitPlugin.v2.getRateLimit('users/me')
console.log(currentRateLimitForMe.limit) // 75
console.log(currentRateLimitForMe.remaining) // 74

I'm getting an error:

'Unsupported Authentication: Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint. Supported authentication types are [OAuth 1.0a User Context, OAuth 2.0 User Context].',

I'm guessing it has an issue with how I'm logging in, I've tried BEARER and using my API Keys, neither seem to work.

How can I obtain rate limit information?

Upvotes: 0

Views: 305

Answers (1)

Ritzy Dev
Ritzy Dev

Reputation: 507

I'm not sure if this is the case but when I logged in to the developer portal I saw there was another section of keys I could create and everything I was doing before was operating under read only mode.

Here is the full code.

const twitterClient = new TwitterApi({
    appKey: API_KEY,
    appSecret: API_SECRET,
    accessToken: ACCESS_TOKEN_KEY,
    accessSecret: ACCESS_TOKEN_SECRET
}, { plugins: [rateLimitPlugin] })

await twitterClient.v2.me()
const currentRateLimitForMe = await rateLimitPlugin.v2.getRateLimit('users/me')
console.log(`rate limit: ${currentRateLimitForMe.limit} remaining: ${currentRateLimitForMe.remaining}`) 

Upvotes: 0

Related Questions