Androidアプリでのユーザーの認証

Androidアプリでのユーザーの認証

ユーザー認証とは 

どこでもサポートSDK(ソフトウェア開発キット)では、どこでもサポートのウィジェットにアクセスするユーザーに関する認証設定を行うことができます。設定後、アプリの利用者はZoho DeskのユーザーIDを使用してサインインする必要があります。サインインすると、アプリの利用者は認証され、どこでもサポートのウィジェットで各種サポート機能を利用できるようになります。Zoho Deskでは、認証方式としてJWT(JSON Web Token)が使用されます。

アプリの利用者は、JWT認証の有無によって、匿名ユーザーと認証ユーザーに分類されます。

    •    匿名ユーザー(JWT認証なし)

利用者はゲストユーザー(匿名ユーザー)と見なされます。ゲストユーザーによって実行できる操作は、ナレッジベースへのアクセス、問い合わせ送信、コミュニティでの投稿の表示、サポート担当者とのチャットに限定されます。自分が送信した問い合わせを表示したり、コミュニティで投稿したりすることはできません。

    •    認証ユーザー(JWT認証あり)

利用者は認証ユーザーと見なされます。認証ユーザーは、ゲストユーザーが行える操作に加えて、送信した問い合わせのステータスの表示、問い合わせへの返信、コメントの追加などの操作を行うことができます。また、コミュニティでは、トピック(投稿)の追加やフォロー、既存の投稿へのコメントの追加など、さまざまな操作を行うことが可能です。

JWT認証とは

JWT(JSON Web Token)とは、データ通信を安全に行うための仕組みです。JWTでは、JSON形式で記述された認証データを一定の形式に変換してから、署名や暗号化を行います。署名を行うことによってデータが改ざんされていないかどうかを確かめ、暗号化を行うことによってデータ保護することができます。主に認証手続きに関する通信において、WebアプリやAPIで広く使用されています。クライアントとサーバー間のデータ通信を安全に行うのに役立ちます。

JWT認証に関する詳細については、こちらをご参照ください。

ユーザー認証を行うには、以下のコードを使用します。
  1. if(!MyApplication.deskInstance.isUserSignedIn())
    {
       MyApplication.deskInstance.loginWithJWTToken(String jwtToken, ZDPortalCallback.SetUserCallback callback)
    }

上記のコード内の各パラメーターの説明は、以下のとおりです。

    1    loginWithJWTToken:ユーザーのJWTトークンを入力するための関数です。
    2    jwttoken:生成されたJWTトークンです。アプリにサインインするユーザーの認証時に使用されます。
    3    callback:「ZDPortalCallback.SetUserCallback」のインスタンスです。「userFetch」が実行された後に呼び出されます。

関数「loginWithJWTToken」は、利用者がどこでもサポートSDK(ソフトウェア開発キット)にサインインしていない場合にのみ実行される必要があります。そのため、利用者がサインインしているかどうか確認するようにウィジェットを設定する必要があります。

サインインを確認するには、以下のコードを使用します。
  1. boolean isUserLoggedIn = MyApplication.deskInstance.isUserSignedIn();

利用者のログアウト 

どこでもサポートから利用者をログアウトさせるには、以下のメソッドを使用します。
  1. MyApplication.deskPortalSDK.logout
    (new ZDPortalCallback.LogoutCallback()
    {
       @Override
       public void onLogoutSuccess()
       {
          //User logged out
       }
       @Override
       public void onException(ZDPortalException e)
       {
       }
    });
このメソッドを使用すると、認証ユーザーは匿名ユーザーとして見なされます。

ローカルデータのクリア 

認証ユーザーがどこでもサポートのウィジェットからログアウトすると、デバイスに保存されているすべてのデータ(ローカルデータ)が自動でクリアされます。

匿名ユーザーのローカルデータもクリアする場合は、以下のメソッドを使用します。
  1. MyApplication.deskInstance.clearDeskPortalData();