Help us understand the problem. What is going on with this article?

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."
pomu0325
ubiregi
iPadを活用したSaaS型POSシステム「Ubiregi (ユビレジ)」を開発・提供しています
https://ubiregi.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした