思い出は銀の弾

ひよっこエンジニアが調べたことや経験したことをまとめます!

Yahoo! Messengerのログイン状況を得るAPI的なものの使い方

チームの配属が10月にあり、それ以降業務中の連絡手段の一部でYahoo! Messengerを使っています。

といってもご存知のとおり(?)Yahoo! JapanとしてのYahoo! Messenger終了しており、アメリカのYahoo!のサービスを使っています。

f:id:masayuki610930:20151222004333p:plain

今回はこのYahoo! Messengerのログイン状況を簡単に知る方法を書いてゆきます。

今回の内容

  • Web API っぽく利用する
  • 既知IDのユーザーが現在メッセンジャーにログイン中かわかる
  • 非推奨の方法かもしれない(後述)

方法

アクセスポイントはこちら。

http://opi.yahoo.com/online

パラメータとして次の3つがあります。

u m t
対象のID gもしくはa 数字

パラメータu

ログイン状況を知りたい、ユーザーIDを指定します。

パラメータm

ここでAPIの返却値を、画像でもらうか、テキストでもらうかを指定します。

gの時はhtmlが返却され、その中にはimgタグが入ってたりします。

aのときは、テキストで結果が返ってきます。

パラメータt

このパラメータは種類を指定します。

m=gの際はtが受け付ける範囲は0〜24で、

m=aの際は0〜1です。

実際にやってみる

ブラウザからやってみる

http://opi.yahoo.com/online?u=testid&m=g&t=0

で試しにブラウザからアクセスすると、(たぶんこんなIDはないから)

f:id:masayuki610930:20151221234928g:plain

という画像が返ってきます。(具体的なHTMLの中身は各自でご確認を。)

実際ユーザーがログインしているときは、

f:id:masayuki610930:20151221235524g:plain

と画像が変わります。

実際のログイン判定

上記のような画像が返ってくる指定の際、実はユーザーがオンラインかオフラインの判断がやりづらいです。というのも、返ってくる文字列は同じなんです。

ということで、おとなしくm=aを指定し、文字列で返却してもらいましょう。

http://opi.yahoo.com/online?u=testid&m=a&t=1

ブラウザからアクセスすると、

00

が返ってきます。(実際はpreタグの中にある。)

これがログイン時は

01

となります。

ということで、これをサクッとphpで書くと、次のようになります。

Yahoo! Messengerのログイン状況をチェックする

簡単ですね!

注意点

最後に注意点です。

冒頭にもお伝えしましたが、この方法は非推奨なものかもしれません。理由としては次のとおりです。

  • 公式ドキュメントを探してみたのですが、記載が見つからない
  • いつ使えなくなるか不明である(ドキュメントがないので)
  • 使用済みアカウントの探索に使えてしまう

とくに、3つ目のおかげでこのやり方のグレー感がものすごくあります(個人的な感想ですが。)

なので使う際は、このあたりの理解をもって、試してみるようにしましょう!


参考にしたサイト:http://shareourideas.com/2010/03/25/yahoo-messenger-status-api/