この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
最近モバイルでの開発をしていた際、各キャリアのユーザ識別IDを取得し、自動ログインをさせる機能を作成したことがあるのですが、その識別IDはいろいろとお約束があるらしく、少しハマったところなので、メモ書き程度にまとめてみます。各キャリア(DoCoMo、au、SoftBank)で取得できる端末識別ID・ユーザ識別IDについて、いろんな決まりごとがあるので、調べた範囲で書きます。
まずはDoCoMoからー
☆DoCoMo
DoCoMoでは、端末識別番号・iモードID・UID(公式サイトのみ)が取得できます。
・iモードID
URLのパラメータに「guid=ON」を付けると取得できる半角英数7桁の識別子。
公式サイトでなくても取得出来ますが、SSL対応しているページでは取得出来ません。
・UID
DoCoMo公式サイトに限り、URLのパラメータに「uid=NULLGWDOCOMO」を付けると取得できる半角英数12桁の識別子。
これも、SSL対応ページでは取得できません。
また、「uid=NULLGWDOCOMO」となっていますが、「NULLGWDOCOMO」の部分は12桁の半角英数であれば、「NULLGWDOCOMO」である必要はないらしいです。
だから、UIDを取得するときは12桁かどうかのチェックが必要になりますね!
SSLページで取得出来ないというのは結構クリティカルでした。。。
ちなみに対応としては、SSLページへの遷移の前に1つアクションを挟む(iモードID・UIDが取得できるアクションで取得する)か、SSLページへのリンクに何かパラメータをつけて、そのパラメータが無いと自動ログインとしてみなさない、といった対応が必要です。
(セッション情報を用いた成りすましに注意!!)
au、SoftBankに関しては、また別途追記します。