mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

Gmail™×mixi連携スタート!の件について

(いわゆる宣伝エントリーなので余裕のある方はお読みください)

お世話になっております。ソーシャルグラフ開発チーム asannou です。
Gmailとmixiがつながりました」ということで、Gmail™のアドレス帳(連絡先)からマイミクシィを追加したり、友人をmixiに招待したりできるようになりました。以前から、メールアドレスでマイミク登録という機能がありますが、ここにアドレス帳のメールアドレスを一個ずつコピペするかわりに、まとめてインポートしてサクサクとマイミク申請&招待できるようになるイメージですね。
今回は技術的な部分のご紹介をさせていただきたいと思います。

アクセス権限を委譲する

本機能では、Gmail™のアドレス帳をインポートする際に、OAuthという仕組みを利用してアクセスをおこなっているので、mixiに、Googleアカウントのユーザー名とパスワードを入力する必要がなく、Gmail™のアドレス帳のみにアクセスする権限を与えられる(委譲できる)ようになっています。

Googleアカウントのログイン画面

Googleアカウントのログイン画面

 

OAuthの認可画面

OAuthの認可画面

こちらが実際にインポートをするときのスクリーンショットですが、Googleのログイン画面がポップアップされているのがわかります。ここに、Googleアカウントのユーザー名とパスワードを入力し、リクエストを許可することによって、アクセス権限が委譲され、アドレス帳のインポートが可能になるわけです。アドレスバーの先頭が https://www.google.com/ となっていることを確認してから、パスワードを入力するようにしてくださいね。

権限の委譲について、もうちょっと詳しく説明しますと、今回はOpenIDをベースにOAuthを乗せた形の、OpenID OAuth Extensionを採用してみました。理由としては、同時にOpenID User Interface Extensionに対応することで、前述のような、権限の委譲が直感的にわかりやすいUI(mixiとGoogleのfaviconが並んで表示されるとか)を提供する狙いがあります。Extensionとか言われてもよくわかんない、という方はとりあえず、「OAuth単体で使うより、OpenIDと組み合わせたほうが、おしゃれなポップアップウィンドウを出せるから、そうした。あとOpenIDを流行らせたい」とご理解ください。

とにかく、これにてmixiは、一気にOAuth ConsumerおよびOpenID Relying Partyになることができました。技術的に、mixiにOpenIDでログインしたり、新規登録するための条件が整ったということですので、希望される方はどこかでつぶやくと、私の来期あたりのコミットメントに「OpenIDによるログイン機能のリリース」が追加されるかもしれません。
もうお忘れになっている方もいらっしゃるかもしれませんが、mixiはOpenID Providerでもあるので、よろしければそちらもあわせてご利用ください。

ODF

そもそも、ウェブメールのアドレス帳をインポートする機能なんていうのは、今やSNSでは標準装備だったりします。
実は、2年ほど前にODFで取り組んだネタが発端だったのですが、紆余曲折がありまして、一旦ペンディングになっていたのでした。そんなプロジェクトを拾い上げてくれた、今のチームのリーダーや、一緒に仕様を考えてくれたディレクターには感謝です。
mixiのユーザー層で、Gmail™を利用されている方の割合は多くありませんが、スマートフォンのシェアが伸びていき、サーバサイドでアドレス帳を管理するのが一般的になれば、このような機能も活きてくるのではないかと思っています。
それにしても、当時の資料のタイムスタンプが2008年などとなっているのを見ると、胸が熱くなりますね。

サードパーティにパスワードを預けること

逆に、OAuthのような、限定的に権限を委譲できる仕組みを利用しないことにより、思いもよらないリスクが存在するケースもあります。
最近、mixiのリソースにアクセスするために、mixiのログインメールアドレスとパスワードを要求する、サードパーティ製のウェブサービスを多く見かけるようになりました。mixiはSNSという性質上、サードパーティにパスワードを預けてしまうと、自分のコンテンツだけでなく、マイミクが自分に対して、「友人まで公開」しているプロフィールや日記などにアクセスする権限を与えたことと等価となってしまいます。自分がリスクを負うだけならまだしも、マイミクの全員にそのことを納得してもらうのは難しいですよね。。。また、「パスワードは目的以外に使用することはありません」と但し書きがあり、それが真実だとしても、なんらかのトラブルでそのサードパーティから、mixiのパスワードが流出しないとも言い切れません。そのようなサービスにパスワードを預ける前に、上記のことを思い出していただけますよう、どうかよろしくお願いいたします。

とはいえ、mixiにはAPIでアクセスできないリソースがたくさんあります。
パスワードで認証をおこなうウェブサービスである限り、ユーザビリティを確保しながら、サードパーティからのパスワードによるアクセスを完全に防ぐ手段は現状ありません。ミクシィのエンジニアであるという立場を離れて言うと、サービス提供者は可能な限り、OAuthを利用して、サードパーティが安全に、すべてのリソースにアクセスできるAPIを用意し、そちらの利用を啓蒙していくべきだと考えます。

少し話が脱線してしまいました。
パスワードの扱いについて考えつつ、まずはこの機能でGmail™の友人たちとmixiって(つながって)みてはいかがでしょうか。

最後になりましたが、Google Contacts Data APIの提供と、ブランドの使用許諾をくださいましたGoogle社様には、心より御礼申し上げます。