Q&A

一部LINEアカウントで、IDトークンのペイロードがデコードできない

前提・実現したいこと

ウェブアプリにLINEログインを組み込むを参考にブラウザ上でのLINE Login機能を実現したいです。

発生している問題・エラーメッセージ

一部アカウントで、返却されたIDトークンのペイロードがデコードできません。 現時点で発生しているのは5件中1件です。

全件で発生するわけではないため、検証に困っています。 尚、デコード出来ないアカウントは何度、tokenを取り直してもデコードできません。

golangでのエラー

unexpected end of JSON input

javascriptでのエラー

VM55:1 Uncaught DOMException: Failed to execute ‘atob’ on ‘Window’: The string to be decoded is not correctly encoded.
    at <anonymous>:1:1

該当のソースコード

golang

type LineIdToken struct {
  Iss      string
  Sub      string
  Aud      string
  Exp      int64
  Iat      int64
  AuthTime *int64
  Nonce    *string
  Arm      []string
  Name     string
  Picture  string
  Email    *string
}
func DecodeJWT(cre *CredentialInfo) (*LineIdToken, error) {
  slice := strings.Split(cre.IdToken, ".")
  dec, _ := base64.StdEncoding.DecodeString(slice[1])
  var idToken *LineIdToken
  if err := json.Unmarshal(dec, &idToken); err != nil {
    return nil, err
  }
  return idToken, nil
}

javascript

atob({{{MY_TOKEN}}})

試したこと

  1. golangで実装した、Oauth認証のtokenをgolang内のアプリでdecodeが出来ない。
  2. golangで実装した、Oauth認証で取得した、tokenをコピペし、consoleでdecodeしたが出来ない。

補足情報(FW/ツールのバージョンなど)

  • 0
  • 1
  • 273
  • twitter facebook

質問者です。

全件で発生するわけではないため、検証に困っています。 尚、デコード出来ないアカウントは何度、tokenを取り直してもデコードできません。

試しに失敗するアカウントの名前を変えてみたのですが、「半角英数字」が入ってる場合NGでとの条件を見つけました。

尚、この失敗するアカウントで別のサービスのLINEログインは、「半角英数字」が入ってる場合でもOKでした。

  • 1
本当によろしいですか? question.vm