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

React Native中Firebase Twitter登录失败,报错auth/invalid-credential

修复Twitter认证的Invalid Credential错误

嘿,问题一眼就能看出来——你错误地用Google的认证提供者来处理Twitter的登录凭证了,这就是为啥会报"无法解析Google id_token"的错误!

核心问题

你代码里用了firebase.auth.GoogleAuthProvider.credential()来生成Twitter登录的凭证,但这个方法是专门给Google登录设计的。Twitter认证得用Firebase对应的TwitterAuthProvider才行。

修复步骤

1. 替换认证提供者

把Google的认证提供者换成Twitter的,用TwitterAuthProvider.credential()方法来创建凭证,它需要传入Twitter返回的authToken和authTokenSecret:

// 把原来这行
const credential = firebase.auth.GoogleAuthProvider.credential(loginData.authToken, loginData.authTokenSecret)
// 改成下面这样
const credential = firebase.auth.TwitterAuthProvider.credential(loginData.authToken, loginData.authTokenSecret)

2. 额外验证项(避免踩坑)

为了确保登录流程完全正常,你可以再检查这几点:

  • 确认Firebase控制台里,Twitter登录配置的消费者密钥(API Key)和消费者密钥密码(API Secret),和你代码中TwitterKeys里的内容完全一致,没有拼写错误。
  • 去Twitter开发者平台查看应用的回调URL,是否和Firebase提供的回调地址一致(一般是https://<你的项目ID>.firebaseapp.com/__/auth/handler)。
  • 可以多打印几次loginData的完整内容,确认authToken和authTokenSecret的格式是正确的,没有返回异常值。

修改后的完整代码

const { RNTwitterSignIn } = NativeModules;
RNTwitterSignIn.init(TwitterKeys.TWITTER_CONSUMER_KEY, TwitterKeys.TWITTER_CONSUMER_SECRET)
RNTwitterSignIn.logIn()
 .then(loginData => {
 console.log("loginData="+loginData.authToken + " " + loginData.authTokenSecret)
 console.log(JSON.stringify(loginData));
 // 替换为Twitter专属的认证提供者
 const credential = firebase.auth.TwitterAuthProvider.credential(loginData.authToken, loginData.authTokenSecret)
 return firebase.auth().signInWithCredential(credential);
 }).then((currentUser)=>{
 this.props.navigation.navigate('FlyerListing')
 AsyncStorage.setItem("user", currentUser.uid)
 console.log("AsyncStorage= " + currentUser.uid)
 })
 .catch(error => {
 console.log(error)
 })

这样修改后,应该就能顺利完成Twitter的Firebase认证了。

内容的提问来源于stack exchange,提问作者Savad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:39:23