SDK による保存情報からのログイン

SDK 側で自動保存されたアクセストークンやそれに関連する情報を使ってログインする方法です。ログインまたはユーザーのリフレッシュ成功時に、SDK 側でストレージに認証結果が自動保存されており、プロセスの再起動時にそれらの情報を使ってログインできます。

Kii Cloud SDK を初期化する際に android.content.Context のインスタンスを指定することでログイン中のユーザーの認証情報を SharedPreferences に自動的に保存するようにできます。保存される情報は以下のとおりです。

  • ユーザー ID
  • ユーザー名
  • メールアドレス
  • 電話番号
  • ディスプレイネーム
  • 所在国
  • アクセストークン
  • アクセストークンの有効期限
  • リフレッシュトークン

ログアウトを呼び出されたタイミングでのみ、これらの情報が削除されます。

この保存されている認証情報を使ってログインを行う例を示します。

  • try {
      // Authenticate a user with the stored credentials.
      KiiUser user = KiiUser.loginWithStoredCredentials();
    
      // Refresh the user.
      user.refresh();
    } catch (UserCredentialsNotFoundException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    } catch (IOException e) {
      // Handle the error.
    }
  • // Authenticate a user with the stored credentials.
    KiiUser.loginWithStoredCredentials(new KiiCallback<KiiUser>() {
      @Override
      public void onComplete(KiiUser user, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
    
        // Refresh the user.
        user.refresh(new KiiUserCallBack() {
          @Override
          public void onRefreshCompleted(int token, Exception exception) {
            if (exception != null) {
              // Handle the error.
              return;
            }
          }
        });
      }
    });

認証情報が SharedPreferences に保存されている場合、loginWithStoredCredentials() メソッドを実行することでログインすることができます。このメソッドはサーバーにアクセスすることはなく SharedPreferences からログイン状態を復元するメソッドです。ユーザーの最新情報を取得する場合は別途、refresh() メソッドを実行してください。

保存されている認証情報は logOut() メソッドを実行することで SharedPreferences から削除することができます。ログアウト後に loginWithStoredCredentials() メソッドを呼び出すと UserCredentialsNotFoundException 例外が発生します。

loginWithStoredCredentials() メソッドによるログインの際、モバイルアプリのインストール直後は認証情報が存在しないため、必ず UserCredentialsNotFoundException 例外が発生します。ユーザー名とパスワードなどを使ってログインしたにもかかわらず、毎回 UserCredentialsNotFoundException 例外が発生する場合は、Kii Cloud SDK の 初期化 の際にコンテキスト情報を指定していることを確認してください。

再ログインを実行するかどうかにかかわらず、アクセストークン等の情報は、ログインやリフレッシュの実行時に常に保存されています。

仮ユーザーを使用する場合でも、仮ユーザーの作成直後に KiiUserrefresh() メソッドを呼び出すことで、loginWithStoredCredentials() メソッドによるログインを行うことができます。

モバイルアプリを設計する際は、Kii Balance チュートリアルの 内部状態の復元 を参考に、永続化と画面遷移を実現してください。