ログイン

ユーザーの作成が完了すると、登録した情報によるログインができるようになります。ログイン機能の概要については ユーザー登録とログイン をご覧ください。

また、ログインに成功後に発行できるアクセストークンを使って、ユーザー名やパスワードの入力なしにログインを行うことができます。アクセストークンの機能概要については ログインとアクセストークン をご覧ください。

パスワードによるログイン

以下の例はパスワードを使ったログインです。ユーザー名とパスワードを指定して authenticate メソッドを呼びます。認証済みメールアドレスや電話番号でログインを行う場合は、ユーザー名の代わりにこれらの値を指定してください。

  • var username = "user123456789";
    var password = "123ABC";
    
    // Authenticate the user
    KiiUser.authenticate(username, password, {
      success: function(theUser) {
        // Do something.
      },
      failure: function(theUser, errorString) {
        // Handle the error.
      }
    })
  • var username = "user123456789";
    var password = "123ABC";
    
    // Authenticate the user
    KiiUser.authenticate(username, password).then(
      function(theUser) {
        // Do something.
      }
    ).catch(
      function(error) {
        var theUser = error.target;
        var errorString = error.message;
        // Handle the error.
      }
    );

ユーザーが未登録の場合や、パスワードが一致しない場合、failure コールバックの errorString に "invalidgrant" が返ります。管理者によってユーザーが 無効化 されていた場合も errorString に "invalidgrant" が返ります。これらの例外をアプリで制御する方法は 詳細情報の取得 をご覧ください。

セキュリティ上の理由により、SDK ではこれらのどれが原因で失敗したのかを判別できません。ただし、管理者は 開発者ログ を確認することで、エラーの原因を特定することができます。

アクセストークンを用いたログイン

アクセストークンによるログインを行うと、一旦ユーザー名やパスワードを使ってログインしたユーザーは、次回以降、その入力を省略できます。つまり、「ログイン状態を保持」のようなユーザーインターフェイスを実現できます。

ログインしたユーザーに対して、Kii Cloud はアクセストークンを発行します。アクセストークンは期限切れや失効するまで有効です。アクセストークンを内部的に保存しておき、2 回目以降はユーザー名やパスワードの代わりにアクセストークンでログインすることで、Kii Cloud へのアクセスを行います。

機能の詳細は ログインとアクセストークン をご覧ください。

ユーザーのパスワードが変更されると、アクセストークンは無効になります。この場合は、ユーザー名とパスワードを使ってログインを行い、新しいアクセストークンを取得してください。
また、ユーザーが無効化された場合も、アクセストークンは無効になります。

発行されたアクセストークンは getAccessToken メソッドを実行するか、getAccessTokenObject メソッドを実行してオブジェクトを取得した後に access_token キーの値を取得することで入手できます。いずれの場合も対象ユーザーがサインインしている状態で実行してください。以下に、両方の方法の例を挙げます。

// Assume user is signed-in

// Get an access token by getAccessToken method.
var accessToken = KiiUser.getCurrentUser().getAccessToken();

// Get the access token by getAccessTokenObject
var tokenObject = KiiUser.getCurrentUser().getAccessTokenObject();
accessToken = tokenObject["access_token"];

アクセストークンを使ってログインを行う例を以下に挙げます。例のようにアクセストークンを指定して authenticateWithToken メソッドを実行します。

  • // Assume accessToken is retrieved from above sample code
    
    // Authenticate the user with the access token
    KiiUser.authenticateWithToken(accessToken, {
      success: function(theUser) {
        // Do something.
      },
      failure: function(theUser, errorString) {
        // Handle the error.
      }
    })
  • // Assume accessToken is retrieved from above sample code
    
    // Authenticate the user with the access token
    KiiUser.authenticateWithToken(accessToken).then(
      function(theUser) {
        // Do something.
      }
    ).catch(
      function(error) {
        var theUser = error.target;
        var errorString = error.message;
        // Handle the error.
      }
    );

取得したアクセストークンは Web Storage などの安全に保存できる場所に保存して、他のサイトのスクリプトから不正に使用されないようにご注意ください。アクセストークンがあれば、ログインしたユーザーの権限で Kii Cloud の領域にアクセスできるため、機密情報として扱う必要があります。

アクセストークンの有効期限

デフォルトでは、取得したアクセストークンは永久的に利用可能となっています。これを変更するには Kii.setAccessTokenExpiration(expiresIn) メソッドを使ってアクセストークンが有効な時間を設定してください。有効時間が設定されると、これ以降発行されるアクセストークンにこの設定が反映されます。

有効期限を設定した場合にはKiiUser.authenticateWithToken(token, callbacks, expiresAt)を使用してログイン時に保存しておいた有効期限を指定してログインすることで、KiiUser.getAccessTokenObjectに正しい有効期限を管理させると便利です。

  • // Assume accessToken and expiresAt are retrieved from above sample code
    var accessToken = getAccessToken();
    var expiresAt = getAccessTokenExpiresAt();
    KiiUser.authenticateWithToken(accessToken, {
      success: function(theUser) {
        // Do something.
      },
      failure: function(theUser, errorString) {
        // Handle the error.
      }
    }, expiresAt)
  • // Assume accessToken and expiresAt are retrieved from above sample code
    var accessToken = getAccessToken();
    var expiresAt = getAccessTokenExpiresAt();
    KiiUser.authenticateWithToken(accessToken, null, expiresAt).then(
      function(theUser) {
        // Do something.
      }
    ).catch(
      function(error) {
        var theUser = error.target;
        var errorString = error.message;
        // Handle the error.
      }
    );