用于空值的空检查运算符 - twitter auth

Null check operator used on a null value - twitter auth

我尝试实施 Twitter 身份验证,并在 1. 在教程之后和 2 在文档之后...教程和文档都在代码中使用了 bang 运算符 (!),在这两种情况下都是 bang -operator 导致错误“Null check operator used on a null value”- 见下图

我确保将方案添加到 androidmanifest.xml 文件并在 Twitter 应用程序设置中添加回调 URL - 我还确保 API 键匹配并且我无法找到绕过 bang 运算符的教程...我尝试使用 if 子句来确保 null 安全,但我仍然不得不使用 bang 运算符,这最终没有改变任何东西。我的函数代码如下

void login() async {
    final twitterLogin = TwitterLogin(
        apiKey: 't4jz7QiK0tkRQNybk2MKlOa3I',
        apiSecretKey: 'KCwmlETZeLyKWmGlyZdQUXArPfdDj8uEIJqrdCJxZ7XRdpT8Lu',
        redirectURI: 'flutter-twitter-login://');

    await twitterLogin.login().then((value) async {
      final twitterAuthCredentials = TwitterAuthProvider.credential(
          accessToken: value.authToken!, secret: value.authTokenSecret!);
      await FirebaseAuth.instance.signInWithCredential(twitterAuthCredentials);
    });
  }

提前感谢您的帮助:)


这是我 运行 使用您的更改时得到的输出:

I/OpenGLRenderer(30256): Davey! duration=41126ms; Flags=1, FrameTimelineVsyncId=13810903, IntendedVsync=184078927234535, Vsync=184078927234535, InputEventId=0, HandleInputStart=184078927898552, AnimationStart=184078927900531, PerformTraversalsStart=184078927901313, DrawStart=184078928491104, FrameDeadline=184078969956757, FrameInterval=184078927890948, FrameStartTime=11111111, SyncQueued=184078929216469, SyncStart=184078929288605, IssueDrawCommandsStart=184078929574907, SwapBuffers=184078941790637, FrameCompleted=184120054049576, DequeueBufferDuration=3825678, QueueBufferDuration=558334, GpuCompleted=184120054049576, SwapBuffersCompleted=184078942707877, DisplayPresentTime=-6758907574315243998,

编辑 2 我现在收到 HttpException: Failed Forbidden 错误...我以前遇到过,但遗憾的是我无法找到解决方案,因为我不知道它来自哪里 - 请参见下面的屏幕截图

你能不能这样试试;

void login() async {
    final twitterLogin = TwitterLogin(
        apiKey: 't4jz7QiK0tkRQNybk2MKlOa3I',
        apiSecretKey: 'KCwmlETZeLyKWmGlyZdQUXArPfdDj8uEIJqrdCJxZ7XRdpT8Lu',
        redirectURI: 'flutter-twitter-login://');

    await twitterLogin.login().then((value) async {
final authToken = value.authToken;
final authTokenSecret = value.authTokenSecret;
if (authToken != null && authTokenSecret != null){
final twitterAuthCredentials = TwitterAuthProvider.credential(accessToken: authToken, secret: authTokenSecret);
await FirebaseAuth.instance.signInWithCredential(twitterAuthCredentials);
}
    });
  }