Hatena::Grouphatenadeveloper

Android向けAPI - ログイン管理API

ja/android/apis/login

「はてなログイン管理」Android アプリケーションは 2016年6月20日をもって提供を停止いたしました。それに伴い、本APIについてもサポートを終了しております。ご注意いただきますようお願い申し上げます。

Androidアプリ「はてなログイン管理」の提供を終了します - はてなの日記 - 機能変更、お知らせなど

Android向けAPI - ログイン管理API

本ドキュメントに関する注意事項

本ドキュメントは「はてなログイン管理」Android アプリケーションにおけるAPI実装を解説するものです。

なお、その他のはてなのAndroid向けAPIについては、以下から閲覧ください。

概要

はてなログイン管理 Android アプリケーションは、外部のアプリケーションがはてなの各サービスの機能を利用するにあたり必要な情報を提供します。

これにより、アプリケーション開発者ははてなへのログイン処理を簡略化することができ、また、アプリケーション利用者は、不用意に様々なアプリケーションに対してはてなのパスワードを入力する必要なくなるためセキュリティリスクが軽減され、またログイン情報を集約できるため利便性が向上されます。

なお、Android マーケットからは「はてなログイン管理」と検索することでインストールできる他、以下の QR コードを読みとることでインストールが可能です。

  • market://search?q=pname:com.hatena.android.accounts

登録されているログイン情報の取得

外部アプリケーションがはてなログイン管理より取得できる情報は以下の通りです。

  • ユーザ名
  • Cookie 用 rk パラメータの値
  • セッションID (rkm パラメータ) (詳しくは はてな認証 - rkm)

現在は上記データのみの提供になり、生パスワード等は取得できません。今後提供するデータが拡張される可能性があります。

startActivityForResult(
    new Intent(Intent.ACTION_PICK)
        .setType("vnd.android.cursor.dir/vnd.hatena.accounts"),
    USER_REQUEST
);

はてなログイン管理は、ユーザーに、元アプリケーションに認証情報を渡すか同意を求めるダイアログを表示します。

onActivityResult に渡される Intent から情報を取得します。

ユーザ名
username (String型)
Cookie 用 rk パラメータの値
randomkey (String型)
セッションID
rkm (String型)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == USER_REQUEST) {
        if (resultCode == RESULT_OK) {
            String username  = data.getStringExtra("username");
            String randomkey = data.getStringExtra("randomkey");
            String rkm       = data.getStringExtra("rkm");

            SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
            editor.putString(ACCOUNT, username);
            editor.putString(RANDOMKEY, randomkey);
            editor.putString(RKM, rkm);
            editor.commit();
        }
    }
}

ログイン情報を再取得

あるAPIに対してログインに失敗した場合、ユーザ名を指定してインテントを発行することにより、ログインの情報の再取得を試みることができます。

startActivityForResult(
    new Intent(Intent.ACTION_PICK)
        .setType("vnd.android.cursor.dir/vnd.hatena.accounts")
        .putExtra("account", username),
    USER_REQUEST
);

返される情報は同じです。

この場合も、はてなログイン管理は、ユーザーに、元アプリケーションに認証情報を渡すか同意を求めるダイアログを表示します。

サンプルコード

取得できる情報は各アプリケーションで保存し、必要に応じてはてなログイン管理へ再認証を要求するようにします。

以下のサンプルでは、ログイン管理アプリとの協調動作、ログイン情報の保持と、HttpClient を使ってのはてなへのアクセス方法へのコードが含まれます。


ご利用にあたっての注意事項

本APIを利用されるにあたっては、以下の点にご注意ください。

  • 本APIは実験的に公開されているものであり、API の仕様変更ならびに API の公開停止を予告なしに行う場合があります。

変更履歴

  • 2010年2月5日 リリース