Cloudflare 작업자에서 Twitter API로 메시지 보내기

Twitter API를 사용하려는 경우 Node.js에서는 제대로 작동하지만 불행히도 Node.js API에 의존하기 때문에 Cloudflare 작업자에서는 작동하지 않는 twitter-api-v2 npm 패키지를 사용하는 많은 예를 보았을 것입니다.

Twitter API를 사용하려면 OAuth 인증을 처리하고 fetch를 사용하여 요청을 보내야 합니다. 이 글을 작성할 당시에는 이에 대한 예가 없었기 때문에 방법을 알아내는 데 시간이 걸렸습니다. 다음 스니펫은 트윗을 보내는 방법을 보여주지만 원하는 API 방법을 사용할 수 있습니다.

import OAuth from 'oauth-1.0a';
import { HmacSHA1, enc } from 'crypto-js';

const oauth = new OAuth({
  consumer: { key: TWITTER_API_KEY, secret: TWITTER_API_SECRET },
  signature_method: 'HMAC-SHA1',
  hash_function(baseString, key) {
    return HmacSHA1(baseString, key).toString(enc.Base64);
  },
});

const oauthToken = {
  key: TWITTER_ACCESS_TOKEN,
  secret: TWITTER_ACCESS_TOKEN_SECRET,
};

const requestData = {
  url: 'https://api.twitter.com/1.1/statuses/update.json',
  method: 'POST',
  data: { status: 'Hello from Cloudflare worker' },
};

const response = await fetch(requestData.url, {
  method: requestData.method,
  headers: {
    ...oauth.toHeader(oauth.authorize(requestData, oauthToken)),
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: new URLSearchParams(requestData.data),
});

console.log(await response.json());

좋은 웹페이지 즐겨찾기