Yo API Keyの登録
http://developer.justyo.co/ こちらから。
API用のアカウントは個人用のアカウントとは別に作ります。
(アプリなどから先に同名のアカウントを作ってしまうと取れない… その場合は消したいアカウントから YODELETE にYoを送って連絡したら削除してもらえました)
Callback URLには、Yoを受信した時にhookとして呼び出すURLを指定できます。
(後からでも変更できます)
Yo APIでできること
-
POST /yoall/
: Yoしてくれた人(フォロワー?)全員にYoを送る。link
パラメータでリンク付きで送れる -
POST /yo/
:username
パラメータで指定したユーザにYoを送る(1分に1回まで)。link
パラメータでリンク付きで送れる - yoを受信したらhookを呼び出してくれる。
username
パラメータで誰から来たか分かる
今のところこれだけ
参考:https://medium.com/@YoAppStatus/yo-developers-api-e7f2f0ec5c3c
Yoを送ったらYoを返すだけのbotを作ってみた
ILLYOBACK にYo送ってみてね。
import unfiltered.request._
import unfiltered.response._
class App extends unfiltered.filter.Plan {
val APIKey = "YOUR_API_KEY_HERE"
def intent = {
case GET(Path("/hook")) & Params(p) =>
p("username").foreach{u =>
import dispatch._, Defaults._
val svc = url("http://api.justyo.co/yo/") <<
Map("api_token" -> APIKey, "username" -> u) <:<
Map("Content-Type" -> "application/x-www-form-urlencoded")
val res = Http(svc OK as.String)
}
Ok
}
}
Scala(Unfiltered)でちょろっと書いてHerokuにデプロイしてみた。
ちょっとハマったとこ
- 既存のアカウントでAPIを有効にできるのかと思ったら、API専用アカウントを新しく作らないとダメだった
- apiのURLの最後に / 付け忘れるとダメ
- content-typeは
application/x-www-form-urlencoded
じゃないとダメ
思った事
- hookの呼び出し元が本当にYoから来てるのか検証する手段が無い(hookのURLがバレると誰でも呼べちゃう)
- フォローされてないアカウントにもapiでYo送れてしまう! SPAMできちゃうね
その他
- 1分に1回以上送ると "Rate limit exceeded. Only one Yo per recipient per minute."