Edited at

Yo APIを試してみた

More than 5 years have passed since last update.


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."