# 他のAPIの利用と実行結果の処理にLINE SDKを使用する

# 実行結果の処理が必要なLINE APIの呼び出し

失敗する可能性があるすべてのLINE SDK for UnityによるAPI呼び出しでは、コールバックでResultオブジェクトが返されます。resultの値を確認すると、成功した場合と失敗した場合の両方を、うまく処理できます。

LineSDK.Instance.Login(scopes, result => {
    result.Match(
        value => {
            Debug.Log("Login OK");
        },
        error => {
            Debug.Log("Login failed, error code: " + error.Code);
        }
    );
});

error節では、すべてのErrorオブジェクトにエラーコードCodeが含まれます。エラーコードはプラットフォームごとに異なります。詳細については、以下のページを参照してください。

# ユーザープロフィールを取得する

profileスコープを指定してログインリクエストを送信すると、ユーザーのLINEプロフィールを取得できます。ユーザープロフィールには、ユーザーID、表示名、プロフィールメディア(画像または動画)、およびステータスメッセージが含まれます。

LineAPI.GetProfileメソッドを以下のように呼び出します。

LineAPI.GetProfile(result => {
    result.Match(
        value => {
            Debug.Log("User ID: " + value.UserId);
            Debug.Log("User Display Name: " + value.DisplayName);
            Debug.Log("User Status Message: " + value.StatusMessage);
            Debug.Log("User Icon: " + value.PictureUrl);
        },
        error => {
            Debug.Log(error.Message);
        }
    );
});

# ユーザーをログアウトさせる

アプリからユーザーをログアウトさせることができます。より良いユーザーエクスペリエンスを提供するために、ユーザーがアプリからログアウトする操作を用意することをお勧めします。

Logoutメソッドを呼び出して、アクセストークンを無効化し、ユーザーをアプリからログアウトさせます。ログアウトした後に再度ログインするには、ユーザーは再度ログインプロセスを行う必要があります。

LineSDK.Instance.Logout(result => {
    result.Match(
        _ => { /* User logout done. Update UI. */ },
        error => {
            Debug.Log(error.Message);
        }
    );
});

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

アクセストークンを使うと、サーバーからLINEログインAPIを呼び出すことができます。詳しくは、『LINEログイン v2.1 APIリファレンス』を参照してください。

現在のアクセストークンを取得するには、LineSDKインスタンスのCurrentAccessTokenプロパティを以下のように取得します。

var currentToken = LineSDK.Instance.CurrentAccessToken;
if (currentToken != null) {
    Debug.Log("Current token value: " + currentToken.Value);
}
注意

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

# アクセストークンを検証し、更新する

CurrentAccessTokenでは、null以外の値が返される場合でも、アクセストークンが有効であることは保証されません。アクセストークンの有効期限がすでに切れていたり、取り消されていたりする可能性があります。LineAPI.VerifyTokenを使用して、現在のアクセストークンがまだ有効であるかどうかを確認してください。

LineAPI.VerifyAccessToken(result => {
    result.Match(
        value => {
            Debug.Log("Channel Id bound to the token: " + value.ChannelId);
        },
        error => {
            Debug.Log("The token verifying failed: " + error.Message);
        }
    );
});

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

開発者自身がアクセストークンを更新することは推奨されません。LINE SDKによるアクセストークンの自動管理に任せるほうが簡単かつ安全です。ただし、以下のようにしてアクセストークンを手動で更新できます。

LineAPI.RefreshAccessToken(result => {
    result.Match(
        token => {
            Debug.Log("Token refreshed. New token: " + token.Value);
        },
        error => {
            Debug.Log("Something wrong when refreshing token: " + error.Message);
        }
    );
});