line / line-sdk-unity

Provides a modern way of implementing LINE APIs in Unity games, for iOS and Android.
https://developers.line.biz/
Apache License 2.0
117 stars 24 forks source link

Only send the raw string ID token value to Unity #64

Closed onevcat closed 10 months ago

onevcat commented 10 months ago

Problem

In a previous version, when user wants to get the ID token, iOS and Android returns different things for AccessToken.IdTokenRaw in the API calling below:

var scopes = new string[] {"profile", "openid", "email"};
LineSDK.Instance.Login(scopes, result => {
    result.Match(
      value => {
        Debug.Log(value.AccessToken.IdTokenRaw);
      },
      error => {}
    );
});

On iOS, it gives the valid raw value of ID Token, such as:

// iOS: Debug.Log(value.AccessToken.IdTokenRaw);
eyJraWQi.....

However, on Android, it is a JSON that represents the parsed ID token, including the raw value:

// Android: Debug.Log(value.AccessToken.IdTokenRaw);
{"issuer": "https://access.line.me", "subject": ... , "rawString": "eyJraWQi...."}

Considering that the property indicates a IdTokenRaw, the correct behavior should be the iOS one, and the SDK user can easily gets the raw string and send it to either their own server or LINE's verification server to verify the ID Token.

In this PR

Only sending the rawString part to Unity, so the behavior on Android can be aligned to iOS.

With this PR, now both iOS and Android gives the same result on IdTokenRaw:

// Debug.Log(value.AccessToken.IdTokenRaw);
eyJraWQi.....
onevcat commented 10 months ago

Related to #61