# アクセストークンを管理する
このトピックでは、以下のアクセストークン管理タスクの実行方法について説明します。
安全にユーザー登録およびログインを処理する方法については、「アプリとサーバーの間で安全なログインプロセスを構築する」を参照してください。
# アクセストークンを更新する
認可が成功すると、ユーザーの有効なアクセストークンがLINE SDKによって保存され、そのアクセストークンを使って、APIリクエストが実行されます。アクセストークンの有効期限は以下のようにして取得できます。
if let token = AccessTokenStore.shared.current {
print("Token expires at:\(token.expiresAt)")
}
API
タイプを介してAPIリクエストが実行されるとき、有効期限が切れたアクセストークンは自動的に更新されます。ただし、アクセストークンが失効してから長期間が経過していると、更新操作は失敗します。その場合はエラーが発生し、ユーザーを再ログインさせる必要があります。詳しくは、「エラーを制御する」を参照してください。
API
タイプのメソッドのみが、アクセストークンを自動的に更新します。そのほかのタイプ(たとえばAPI.Auth
タイプ)のメソッドでは、アクセストークンは自動的に更新されません。
開発者自身でアクセストークンを更新しないことを推奨します。LINE SDKによってアクセストークンを自動的に管理させるほうが、将来のアップグレードを考えるとより簡単な方法です。ただし、必要に応じて、以下のようにしてアクセストークンを手動で更新できます。
API.Auth.refreshAccessToken { result in
switch result {
case .success(let token):
print("Token Refreshed: \(token)")
case .failure(let error):
print(error)
}
}
# 現在のアクセストークンを取得する
クライアントサーバーアプリケーションでは、アプリとサーバーの間でユーザー情報を送受信する際に、アクセストークンを使用してください。
アプリで取得したアクセストークンをサーバーに送信すると、サーバーでLINEログインAPIを呼び出すことができます。
LINEログインAPIについて詳しくは、『LINEログイン v2.1 APIリファレンス』を参照してください。
アプリでLINE SDKが保存しているアクセストークンを取得するには、共有AccessTokenStore
オブジェクトのcurrent
プロパティを以下のように利用します。
if let token = AccessTokenStore.shared.current {
print(token.value)
}
サーバーにアクセストークンを送信するときは、トークンを暗号化し、暗号化したデータをSSLで送信することをお勧めします。サーバーで受信したアクセストークンと、LINEログインの呼び出しに使用するアクセストークンが一致すること、さらにLINEログインの呼び出しに使用するチャネルIDが自分のチャネルのIDと一致することも、検証する必要があります。
# アクセストークンを検証する
現在のアクセストークンの有効性を検証するには、API.Auth.verifyAccessToken
メソッドを呼び出します。結果が含まれるAccessTokenVerifyResult
オブジェクトが返されます。検証に成功すると、レスポンスとしてchannelID
、permissions
、およびexpiresIn
のようなプロパティが返されます。それ以外の場合は、トークンは無効、失効、または期限切れであり、エラーが返されます。
API.Auth.verifyAccessToken { result in
switch result {
case .success(let value):
print(value.channelID) // Bound channel ID of the token.
print(value.permissions) // The permissions of this token.
print(value.expiresIn) // How long it is before the token expires.
case .failure(let error):
print(error)
}
}