用于空值的空检查运算符 - 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);
}
});
}
我尝试实施 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);
}
});
}