Skip to content

Instantly share code, notes, and snippets.

@tajuszk
Created May 20, 2022 02:27
Show Gist options
  • Save tajuszk/733117429b36050e288319cf7e795e52 to your computer and use it in GitHub Desktop.
Save tajuszk/733117429b36050e288319cf7e795e52 to your computer and use it in GitHub Desktop.
'use strict';
const CONSUMER_KEY = 'XXXXXXX';
const CONSUMER_SECRET = 'XXXXXXXXXXXX';
const client = TwitterClient2.getInstance(CONSUMER_KEY, CONSUMER_SECRET)
/**
* メイン処理 [全フォロー取得する方法]
*/
function main() {
// ① Twitterの公式リファレンスを見ながらパラメータを確認する
// https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/get-users-id-following
// ② params はこんな感じで設定する({}で囲われた書き方をJSON形式と言う)
// ※設定自体は適当なので適宜カスタマイズしてください
const params = {
'expansions': 'pinned_tweet_id', // 固定ツイートのIDを取得
'max_results': 1000, // 1度に取得する人数(指定すると上書きされます)
'user.fields': 'protected,description' // 鍵かどうかと自己紹介を取得
}
/**
* ② はこんな書き方でもOK
* const params = {}
* params['expansions'] = 'pinned_tweet_id';
* params['max_results'] = 1000;
* params['user.fields'] = 'protected,description';
* ︙
*/
let users = []; // ユーザー情報を入れる配列
// ③ 全員分取得するまでループする
while (true) {
const result = client.getFollowUsers(params); // paramsを入れて実行
users = users.concat(result.data); // データを合体させていく
// 1度に取り切れない場合は "meta" というデータの中に "next_token" が入ってくるので
// ①のリファレンスを参考に pagination_token に next_token を入れてループする
if (result.meta.next_token) {
params['pagination_token'] = result.meta.next_token;
} else {
break; // next_tokenがなかったら終了
}
}
console.log(users.length); // フォロー者全員分取れてるか確認
}
/**
* 認証実行
*/
function authorize () {
client.authorize();
}
/**
* 認証を削除したい時はこれを実行する
*/
function reset () {
client.reset()
}
/**
* Twitterの developer portal に登録するURLを取得する
*/
function getCallbackUrl () {
client.getCallbackUrl();
}
/**
* authorizeでTwitterでの認証後に実行される処理
* ※手動で実行はしません
*/
function authCallback (request) {
return client.authCallback(request)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment