LINE 公式アカウントを友だちに追加しているユーザー ID のリストを取得する
タイトルのように、LINE 公式アカウントを友だちに追加しているユーザー ID のリストを知る必要があったのでメモ。
Messaging API に /bot/followers/id
という API が用意されているので、それを使用する。
以下は LINE Messaging API SDK for Ruby の v1.19.0 を使ったサンプル。
client = Line::Bot::Client.new do |config|
# ...
end
def get_followers(all_user_ids = [], continuation_token = nil)
response = client.get_follower_ids(continuation_token)
json = JSON.parse(response.body)
puts "count: #{json["userIds"].count}"
all_user_ids = all_user_ids + json["userIds"]
if json["next"]
puts "continuation_token: #{json["next"]}"
sleep 1
get_followers(all_user_ids, json["next"])
else
puts "done"
return all_user_ids
end
end
1 回のリクエストで取得できるリストは最大 300 件で、それを超える場合はレスポンスに next
トークンが含まれる。
next
トークンが存在する場合は処理を再帰的に実行して残りのリストを取得する。
上記のスクリプトを Rails コンソールなどで実行すると、ユーザー ID のリストを取得できる。
get_followers
# => ["Uxxxxxxxxxxxxxx1", "Uxxxxxxxxxxxxxx2", ...]
注意点としては、この API は認証済みアカウントかプレミアムアカウントしか使えない。 また、ブロックされていたり、プロフィール情報取得に同意していないユーザーは取得できない。
手前味噌だが、元々は API のパスを直書きしていたところを、Ruby SDK に Pull Request を送って v1.19.0 でリリースされた。