Flutter:FirebaseAuth令牌错误:自定义令牌格式不正确。请检查文件

时间:2019-08-14 22:17:38

标签: android ios firebase flutter google-cloud-firestore

我正在Flutter中使用Line App Login,我可以在Line API中获得用户令牌,但我下一步该怎么做。

现在我正在尝试在FirebaseAuth.instance.signInWithCustomToken(token:customToken)中使用它,但是它不起作用。错误日志中显示“ PlatformException(ERROR_INVALID_CUSTOM_TOKEN,自定义令牌格式不正确。请检查文档。[无效的断言格式。],null)”是否可以解决此问题?

lineSignIn() async {
    _flutterLineLogin.startLogin(_onLoginSuccess, _onLoginError);
  }

  void _onLoginSuccess(dynamic value) {
  FirebaseAuth.instance.signInWithCustomToken(token:value['accessToken'].toString()).then((onValue) {
      if (onValue != null) {
 ///this should be success
      }
    }).catchError((onError) {
      print(onError.toString());
    });
  }

  void _onLoginError(Object error) {
    debugPrint("PlatformException: ${error}");
  }

我需要做的只是在Firebase中对令牌进行身份验证。提前谢谢大家!

2 个答案:

答案 0 :(得分:0)

对我来说一样...

就我而言,我使用 Webview 与我的Firebase API(在全球范围内使用创建 Firebase JWT 的Instagram API调用)进行通信。 ),当我输入在cookie中传递给函数FirebaseAuth.instance.signInWithCustomToken()的令牌时……我遇到了相同的错误PlatformException(ERROR_INVALID_CUSTOM_TOKEN, The custom token format is incorrect. Please check the documentation.

我将我的JWT传递给了jwt.io,这似乎是正确的……但对于Firebase:Decoded JavaScript Web Token IMAGE却不是。

此错误与Firebase或Flutter有关吗?

如果有人知道错误在哪里... 请让我知道。

祝你有美好的一天。

答案 1 :(得分:-1)

使用 FirebaseAuth.instance.signInWithCredential 代替FirebaseAuth.instance.signInWithCustomToken

我也使用相同的来源,并尝试通过AuthResult实例获取Firebase,但是由于以下错误FirebaseAuth而失败。

  

PlatformException(ERROR_INVALID_CUSTOM_TOKEN,自定义令牌格式   是不正确的。请检查文档。 [无效的断言   格式。需要3个点分隔的段。 ],为空)

例如,请参见下面的Facebook登录源:

_loginFacebookUser() async {
    try {

      // getting token using email or public profile
      _facebookLogin.logIn(["email", "public_profile"]).then((FacebookLoginResult fbResult) {

        if (fbResult != null) {

          // if facebook login result is loggedIn then
          if (fbResult.status == FacebookLoginStatus.loggedIn) {

            String facebookToken = fbResult.accessToken.token;

            print("facebookToken is: ${facebookToken}");

            AuthCredential credential =  FacebookAuthProvider.getCredential(accessToken: facebookToken);

            // generating firebase authResult for facebook
//            FirebaseAuth.instance.signInWithCustomToken(token: facebookToken).then((AuthResult authResult) {
//
//              AdditionalUserInfo userInfo = authResult.additionalUserInfo;
//              print("facebook userName is: ${userInfo.username}");
//              print("facebook user profile is: ${userInfo.profile}");
//
//            }).catchError((error) {
//              print("error occurred while firebase tokenizing: $error");
//            });

            FirebaseAuth.instance.signInWithCredential(credential).then((AuthResult authResult) {

              AdditionalUserInfo userInfo = authResult.additionalUserInfo;
              print("facebook userName is: ${userInfo.username}");
              print("facebook user profile is: ${userInfo.profile}");

            }).catchError((error) {
              print("error occurred while firebase tokenizing: $error");
            });

          }
        } else {
          print("facebook login result is null");
        }

      }).catchError((error) {
        print("facebook login error: $error");
      });

      setState(() {});

    } catch (error) {
      print("error occurred while loggin: $error");
  }
}

希望它将对某人有所帮助。