Code Monkey home page Code Monkey logo

twitter-api-typescript-sdk's Introduction

Twitter API SDK for TypeScript

Introduction

A TypeScript SDK for the Twitter API. This library is built with TypeScript developers in mind, but it also works with JavaScript.

Note: This SDK is in beta and is not ready for production

You can find examples of using the client in the examples/ directory

Note: Only Twitter API V2 is supported

Features

  • Full type information for requests and responses
  • OAuth2 support
  • Supports Node.js 14+. Doesn't work in browser environments due to the Twitter API not supporting CORS

Installing

npm install twitter-api-sdk

Client

To setup the client we will authenticate with a bearer-token as follows

import { Client } from "twitter-api-sdk";

const client = new Client("MY-BEARER-TOKEN");

For more information about authentication go here

Examples

Consuming a Stream

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

async function main() {
  const stream = client.tweets.sampleStream({
    "tweet.fields": ["author_id"],
  });
  for await (const tweet of stream) {
    console.log(tweet.data?.author_id);
  }
}

main();

Getting a Tweet

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

async function main() {
  const tweet = await client.tweets.findTweetById("20");
  console.log(tweet.data.text);
}

main();

Streaming

For endpoints that return a stream you get sent back an Async Generator which you can iterate over:

const stream = client.tweets.sampleStream();

for await (const tweet of stream) {
  console.log(tweet.data.text);
}

Pagination

For endpoints that have pagination you can

const followers = client.users.usersIdFollowers("20");

for await (const page of followers) {
  console.log(page.data);
}

// This also works
const followers = await client.users.usersIdFollowers("20");
console.log(followers.data);

Authentication

This library supports App-only Bearer Token and OAuth 2.0

You can see various examples on how to use the authentication in examples/

Getting Started

Make sure you turn on OAuth2 in your apps user authentication settings, and set the type of app to be either a confidential client or a public client.

Creating a Public Auth Client

const authClient = new auth.OAuth2User({
  client_id: process.env.CLIENT_ID,
  callback: "http://127.0.0.1:3000/callback",
  scopes: ["tweet.read", "users.read", "offline.access"],
});

const client = new Client(authClient);

Creating a Confidential Auth Client

const authClient = new auth.OAuth2User({
  client_id: process.env.CLIENT_ID,
  client_secret: process.env.CLIENT_SECRET,
  callback: "http://127.0.0.1:3000/callback",
  scopes: ["tweet.read", "users.read", "offline.access"],
});

const client = new Client(authClient);

Generating an Authentication URL

const authUrl = authClient.generateAuthURL({
  code_challenge_method: "s256",
});

Requesting an Access Token

Once the user has approved the OAuth flow, you will receive a code query parameter at the callback URL you specified.

await authClient.requestAccessToken(code);

Revoking an Access Token

const response = await authClient.revokeAccessToken();

Contributing

Note this is only for developers who want to contribute code to the SDK

Clone the Repository

git clone https://github.com/twitterdev/twitter-api-typescript-sdk

Running the Generation Script

Generating the SDK with the latest OpenAPI spec. The version is any valid SemVer version

yarn generate 1.0.0

Generating the SDK with a local OpenAPI specification file.

yarn generate 1.0.0 --specFile ~/path/to/file/openapi.json

The files generated are put in the src/gen directory, these files are not edited manually.

Building

yarn build

Testing

yarn test

twitter-api-typescript-sdk's People

Contributors

refarer avatar macoajan avatar equal-l2 avatar foundingnimo avatar roj1512 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.