You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Firebase Facebook认证报错:AccessToken无token属性

Flutter Firebase Facebook认证:解决"the getter 'token' isn't defined for the type 'AccessToken'"错误

这个问题是因为你使用的facebook_auth库版本(大概率是v6及以上)对AccessToken类做了属性名变更,原来的token字段被重命名为value了。

直接修改代码里的凭证生成行即可:

// 替换原来的 accessToken.token 为 accessToken.value
final OAuthCredential credential = FacebookAuthProvider.credential(accessToken.value);

完整修改后的代码:

Future<User?> signInWithFacebook() async {
    try {
      // 触发Facebook认证流程
      final LoginResult result = await FacebookAuth.instance.login();

      if (result.status == LoginStatus.success) {
        final accessToken = result.accessToken!;
        
        print('AccessToken类型: ${accessToken.runtimeType}');
        print('AccessToken属性: ${accessToken.toString()}');
        
        // 使用token生成认证凭证
        final OAuthCredential credential = FacebookAuthProvider.credential(accessToken.value);
        // 补充登录步骤:用凭证完成Firebase登录
        final UserCredential userCredential = await _auth.signInWithCredential(credential);
        return userCredential.user;
      }
      // 处理登录失败场景
      return null;
    } catch (e) {
      print('Facebook登录错误: $e');
      return null;
    }
}

另外注意:你原代码里缺少了用生成的凭证调用signInWithCredential的核心步骤,直接返回_auth.authStateChanges()会返回一个用户状态流,而非当前登录的用户实例,上面的修改已补上这部分逻辑。

最后检查pubspec.yaml中的依赖版本,确保firebase_auth和facebook_auth版本兼容,避免出现其他版本冲突问题。

内容的提问来源于stack exchange,提问作者yusuf çelebi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:22:05