首页 > 解决方案 > 如何使用 http POST 方法将当前用户(使用应用程序的人)、Firebase Id 令牌从 Flutter 应用程序发送到 restapi?

问题描述

我已经创建了一个应用程序,使用 Flutter for UI 和 Nodejs 中的 Restapi 作为后端。现在我想验证注册了firebase身份验证的用户,发送当前用户的firebase Id令牌。为此,我使用 HTTP Post 方法发送 id 令牌。但是遇到了错误。

示例代码:

        import 'package:http/http.dart' as http;

    FirebaseUser user = await FirebaseAuth.instance.currentUser();
       if(user!=null){
  Future<IdTokenResult> idtoken = user.getIdToken();
    }
 http.Response response = await http.post("https://www.something.com/something/something",
                              body:jsonEncode({
                                "name": name.text,
                                "pincode": "$pincode",
                                "token": idtoken,
                                "phone": "${widget.phoneNo}",
                              }),
                                  headers: {'Content-Type': 'application/json'},
                              );

出现错误:

     Unhandled Exception: Converting object to an encodable object failed: Instance of 'Future<IdTokenResult>'

PS:建议编辑,如果问题有问题,我的想法 (提前感谢您的帮助:))

标签: node.jsfirebasehttpflutterfirebase-authentication

解决方案


你需要 token(String) 而不是 idtoken(IdTokenResult)

import 'package:http/http.dart' as http;

FirebaseUser user = await FirebaseAuth.instance.currentUser();

if(user!=null){
  IdTokenResult idtoken = await user.getIdToken(); 
  // get String token  
  String token = idtoken.token;
}
 http.Response response = await http.post("https://www.something.com/something/something",
                              body:jsonEncode({
                                "name": name.text,
                                "pincode": "$pincode",
                                "token": token,
                                "phone": "${widget.phoneNo}",
                              }),
                                  headers: {'Content-Type': 'application/json'},
                              );


推荐阅读