在Flutter中下载图片时如何将Firebase身份验证令牌发送到后端

时间:2019-06-17 11:47:40

标签: firebase flutter firebase-authentication

我有一个使用Firebase身份验证的Flutter应用程序,并且可以运行。我需要从后端检索图像,但是它们需要授权,因此我需要发送Firebase authToken作为授权标头。我在获取Firebase authToken时遇到问题,因此可以将其设置为CachedNetworkImage。

我是Flutter的新手,它专门针对Flutter,因为我确实在iOS-Swift中使用了它。

当我对正确的authToken进行硬编码时,我已经成功检索了图像。这证明我的后端工作正常。

我还可以异步检索authToken,但是无法将其连接到CachedNetworkImage。

这正在工作

class RemoteImage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    String tripId = 'TXt1XIvqUDzBP6T11xTF';
    String url = 'http://localhost:8080/api/trips/$tripId/images/$tripId.jpg';

    String token = 'a correct secret token';
    Map<String, String> headers = {"Authorization": "Bearer " + token};
    return CachedNetworkImage(
      placeholder: (context, url) => CircularProgressIndicator(),
      imageUrl: url,
      httpHeaders: headers,
    );
  }
}

这是我尝试过的,但是图像从未显示

class RemoteImage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    String tripId = 'TXt1XIvqUDzBP6T11xTF';
    String url = 'http://localhost:8080/api/trips/$tripId/images/$tripId.jpg';

    FirebaseAuth.instance.currentUser().then((FirebaseUser user) {
      user.getIdToken().then((String token) {
        Map<String, String> headers = {"Authorization": "Bearer " + token};
        return CachedNetworkImage(
          // placeholder: (context, url) => CircularProgressIndicator(),
          imageUrl: url,
          httpHeaders: headers,
        );
      });
    });

    return CircularProgressIndicator();
  }
}

我知道问题所在,但是我一直在寻找解决方案。如果有人可以提示我需要搜索的方向,我将不胜感激。

Thx

0 个答案:

没有答案
相关问题