Twitterのユーザーを特定する方法

ユーザー名を変更しても、Twitterのユーザーを確認・特定するのってかなり面倒です。
そこで変更されたユーザー名=別ユーザーとするのも一つの手です。
ユーザー名を変更した、ユーザー自身の趣旨・意思にもたぶん沿います。


一方、ツイートをアーカイブするようなサービスを提供している場合には、この手がとれないですよね。
ではどうすればいいでしょうか。

前提

Twitterのユーザーは、ユーザー名(http://twitter.com/(ユーザー名)/として使われる部分。)では特定できません。
ユーザー名は簡単に変更できるからです。



Twitterの検索APIをお使いの方は、そこで表示されるfrom_user_idで特定している方も多いと思います。
しかしfrom_user_idでも特定できません。
from_user_idは、ユーザー名の変更と共に変わっている様子だからです(ガーン)


しかしTwitterはユーザー名を変更しても、ツイートやフォロー・被フォローのリレーションを切れずに維持しています。
内部のシリアルのようなもので管理しているのでしょうか。


結論

1.Twitterのユーザーを特定するのはuser_id。
2.user_id≠from_user_id(←なんだってー)
3.user_idは、ユーザー情報関連のAPI"show"でわかる。

詳細

1.Twitterのユーザーを特定するのはuser_id。

上記事情から、ユーザーの同一性を確認するには、user_idを保管しておく他ありません。
from_user_idやユーザー名では、ユーザー名の変更で変わってしまうので対応できなくなります。


2.user_id≠from_user_id(←なんだってー)

検索APIのfrom_user_idと実際のID違うとかwwwwwwふざけんなwwww (ryless than a minute ago via Twit


ホントウデスヨ(T_T)
なにか事情があるのでしょうが、もう少しまぎらわしくない名前をつけてくださいな。


from_user_idって書かれたらこれはツイート主のユーザーID→ユーザー名を変更しても変わらないもの、と思っちゃいますよねぇ……(上で書いたとおり、変わります)




3.user_idは、ユーザー情報関連のAPI"users/show"でわかる。

http://twitter.com/users/show/(ユーザー名).xml

と投げれば、冒頭にで囲まれたところに、user_idが保管されてますので、これを引っ張っておけば吉。


しかし「ただし、指定ユーザが自分の friend でない場合、この API の実行は失敗する」そうですが、今のところ確認した範囲では無関係でもとれてます(ブラウザからは表示できますが、スクリプトからは失敗しました)。
他に確実な方法がみつかったら書き換えます。


一番確実で簡単なのは、http://twitter.com/(ユーザー名)/のrel="alternate"をみれば、RSSのファイル名がuser_idになっているので、ここからひっぱることなんですが、一応APIを通じて取るのが原則ですからねぇ……


Twitter API 仕様書 日本語訳 第四十九版 (2010年3月3日版) (404 Blog Not Found)
 http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt


<追記>2010/07/04
未確認ですが、修正予定とのこと。そりゃそうですよね……。
情報ありがとうございます。


システム修正の歴史的事情から来る問題だそうです。API Ver2で修正される予定とのこと。



<追記>2010/11/08
以下の記事をかきました。
from_user_id_strなんてのが追加になっているので気をつけてください。