今回は、ログイン画面を作り、アプリユーザーがKii Cloud上のアプリにメールアドレスとパスワードでログインできるようにします。
実装例はここにあります。login_signupブランチをチェックアウトし、Constants.javaのAppId/AppKeyを置き換えて動かしてみてください。
メールアドレスとパスワードの入力欄(EditText)と、ログインボタンを配置します。
FragmentのonCreate()あたりでインスタンスを作成します。引数にVolleyのRequestQueueが必要なので、ついでに作成します。
private RequestQueue mQueue;
private AppAPI mAppApi;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mQueue = Volley.newRequestQueue(getActivity());
mAppApi = new KiiVolleyAPI(mQueue, Constants.APP_ID, Constants.APP_KEY, Constants.BASE_URL);
}
画面から入力されたメールアドレス/パスワードを取得し、AppAPI#loginAsUser(email, password, callback)を呼びます。Volleyなので非同期呼び出しです。Kii Cloudから結果を受け取ったら、callbackのメソッドが呼ばれます。
成功時はアクセストークンと、ユーザーが引数で渡されます。自動ログインを実装したい場合は、このトークンをSharedPreferencesなどに保存しておきます。(暗号化しておいたほうがやや安全)
また、この時点で、mAppApiにアクセストークンがセットされるので、これ以降のAPI呼び出しはログインしたユーザーの権限で行われます。
mAppApi.loginAsUser(email, password, new AppAPI.LoginCallback() {
@Override
public void onSuccess(String token, KiiUser user) {
ui.hideProgress();
ui.showToast("Login is succeeded!");
}
@Override
public void onError(int status, String body) {
ui.hideProgress();
ui.showToast("Login is failed status=" + status);
}
});
ログインする機能だけあっても、ユーザー登録する方法がなければどうしようもないので、次回はユーザー登録機能をアプリに実装してみます。