# アクセストークンを管理する

このトピックでは、以下のアクセストークン管理タスクの実行方法について説明します。

安全にログインを処理する

安全にユーザー登録およびログインを処理する方法については、「アプリとサーバーの間で安全なログインプロセスを構築する」を参照してください。

# アクセストークンを更新する

認可が成功したあと、ユーザーの有効なアクセストークンがLINE SDKによって保存されます。このアクセストークンを使って、APIリクエストが実行されます。アクセストークンの有効期限は以下のようにして取得できます。

LineAccessToken accessToken = lineApiClient.getCurrentAccessToken().getResponseData();
Log.i(TAG, accessToken.getExpiresInMillis());

LineApiClientインターフェイスを介してAPIリクエストが実行されるとき、有効期限が切れたアクセストークンは自動的に更新されます。ただし、アクセストークンが失効してから長期間が経過していると、更新操作は失敗します。その場合はエラーが発生し、ユーザーを再ログインさせる必要があります。

開発者自身がアクセストークンを更新することは推奨されません。LINE SDKによるアクセストークンの自動管理に任せるほうが、将来のアップグレードを考えるとより簡単で安全な方法です。ただし、以下のようにしてアクセストークンを手動で更新できます。

LineAccessToken newAccessToken = lineApiClient.refreshAccessToken().getResponseData();

# 現在のアクセストークンを取得する

クライアントサーバーアプリケーションでは、アプリとサーバーの間でユーザー情報を送受信する際に、アクセストークンを使用してください。 アプリで取得したアクセストークンをサーバーに送信すると、サーバーでLINEログインAPIを呼び出すことができます。 LINEログインAPIについて詳しくは、『LINEログイン v2.1 APIリファレンス』を参照してください。

アプリでLINE SDKが保存しているアクセストークンを取得するには、以下のようにgetCurrentAccessToken()メソッドを呼び出します。

String accessToken = lineApiClient.getCurrentAccessToken().getResponseData().getTokenString();
注意

サーバーにアクセストークンを送信するときは、トークンを暗号化し、暗号化したデータをSSLで送信することをお勧めします。サーバーで受信したアクセストークンと、LINEログインの呼び出しに使用するアクセストークンが一致すること、さらにLINEログインの呼び出しに使用するチャネルIDが自分のチャネルのIDと一致することも、検証する必要があります。

# アクセストークンを検証する

LINE SDKが保存しているアクセストークンの有効性をアプリで検証するには、verifyToken()メソッドを呼び出します。結果が含まれるLineApiResponseオブジェクトが返されます。次にisSuccess()メソッドを呼び出して、トークンの有効性を確認できます。

isSuccess()メソッドからtrueが返される場合は、トークンは有効です。そうでない場合は、アクセストークンが無効または期限切れであるか、何らかの理由でLINE SDK内でLINEログインAPIの呼び出しに失敗しています。

isSuccess()メソッドからfalseが返される場合は、LineApiResponse.getErrorData()メソッドを使用してverifyToken()メソッドが失敗した原因を確認できます。なお、この場合は、getResponseData()メソッドからnullが返されます。

LineApiResponse verifyResponse = lineApiClient.verifyToken();
 
if (verifyResponse.isSuccess()) {
 
    Log.i(TAG, "getResponseData: " + verifyResponse.getResponseData().toString());
    Log.i(TAG, "getResponseCode: " + verifyResponse.getResponseCode().toString());
 
    return true;
 
} else {
 
    Log.i(TAG, "getResponseCode: " + verifyResponse.getResponseCode());
    Log.i(TAG, "getErrorData: " + verifyResponse.getErrorData());
 
    return false;
 
}

アクセストークンに関連付けられている権限のリストを取得するには、LineApiResponse.getPermission()メソッドを呼び出します。以下の例では、トーストでアクセストークンの権限のリストを表示する方法を示しています。

...
  
protected void onPostExecute(LineApiResponse response){
  
    if (response.isSuccess()){
        StringBuilder toastStringBuilder = new StringBuilder("Access Token is VALID and contains the permissions: ");
         
        for (String temp : response.getResponseData().getPermission()) {
            toastStringBuilder.append(temp + ", ");
        }
        Toast.makeText(getApplicationContext(), toastStringBuilder.toString(), Toast.LENGTH_SHORT).show();
    }
    ...
}