nodejs twitter api получает токен доступа oauth и секрет из тела запроса

#javascript #node.js #typescript #twitter #twitter-oauth

#javascript #node.js #typescript #Twitter #twitter-oauth

Вопрос:

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

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

Я хочу, чтобы интерфейс заставлял других пользователей авторизовать это приложение, извлекать соответствующие токены и секреты и передавать их на сервер при попадании в конечную точку.

 const {
  TWITTER_CONSUMER_KEY,
  TWITTER_CONSUMER_SECRET,
  TWITTER_ACCESS_TOKEN,
  TWITTER_ACCESS_TOKEN_SECRET,
} = process.env as any;

class TwitterFeed {
  public path = "/tweet";
  public router = express.Router();
  // this instance is used for app-auth context only
  private T = new Twit({
    consumer_key: TWITTER_CONSUMER_KEY,
    consumer_secret: TWITTER_CONSUMER_SECRET,
    access_token: TWITTER_ACCESS_TOKEN,
    access_token_secret: TWITTER_ACCESS_TOKEN_SECRET,
  });

....
....
private homeTimeline = async (request:Request, reponse:Response, next: NextFunction) => {
 try {
  // create new Twit instance for this one..
  // with request ACCESS_TOKEN and SECRET
  const tw = new Twit({
    consumer_key: TWITTER_CONSUMER_KEY,
    consumer_secret: TWITTER_CONSUMER_SECRET,
    // access token from post body
    access_token: request.body.access_token, 
    // access token secret from post body
    access_token_secret: request.body.access_token_secret,
  });
  const tweets: any = await tw.get('statuses/home_timeline', { count: 20 });
  const data = tweets.data.map((tweet: any) => {
    return {
      created_at: tweet.created_at,
      id_str: tweet.id_str,
      text: tweet.text,
      entities: tweet.entities,
      retweet_count: tweet.retweet_count,
      favorite_count: tweet.favorite_count
    };
  });
  reponse.send(data);
} catch (error) {
  next(error);
}    
  }
  

Здесь я предполагаю, что интерфейс обрабатывает аутентификацию пользователя в нашем приложении и отправляет access_token значения и access_token_secret значения при достижении конечной точки для home Timeline .

Это правильный способ сделать это?

Комментарии:

1. То, что вы делаете, это нормально, вам просто нужно реализовать вход в систему с помощью Twitter flow и сохранить токен доступа пользователя и секрет токена доступа, и я не вижу этого в вашем коде здесь.

2. @AndyPiper эта часть будет обработана в интерфейсной части.

3. Хорошо, я думаю, я все еще не уверен, в чем ваш вопрос?