javascript - Firebase 身份验证错误:auth/invalid-credential
问题描述
我已经尝试使用 firebase 提供的身份验证服务超过 2 周了。一切都很完美,直到昨天,我无法使用 facebook auth provider 和 twitter 来让用户连接到我的 web 应用程序。
我尝试注销并登录,我删除了我的 facebook 和 twitter 应用程序并创建了其他应用程序,即使使用其他帐户,问题仍然存在。
当我尝试使用他们在之前工作的 github 上提供的代码时,也发生了同样的问题。
奇怪的是,当我使用谷歌提供商或使用电子邮件和密码登录方法时,它工作正常。
PS:我确保在控制台中启用了提供程序。
const signInWithFacebookButton = document.getElementById('signInWithFacebook');
const auth = firebase.auth();
const signInWithFacebook = () => {
const facebookProvider = new firebase.auth.FacebookAuthProvider();
auth.signInWithPopup(facebookProvider)
.then(() => {
console.log('Successfully signed in');
})
.catch(error => {
console.error(error);
})
}
signInWithFacebookButton.addEventListener('click', signInWithFacebook);
当我尝试使用 facebook 进行身份验证时出现错误消息:
{code: "auth/invalid-credential", message: "The supplied auth credential is malformed or has expired."}
当我尝试使用 twitter 进行身份验证时出现错误消息:
{code: "auth/invalid-credential", message: "Error getting request token: 403 <?xml version="1.…ode-project-fd88e.firebaseapp.com/__/auth/handler"}
解决方案
对于 Twitter 登录,错误代码 403 表示客户端访问该 URL 被禁止。它给出了这样的错误,因为您必须将回调 URL(您的站点)列入白名单。
从文档中,
作为我们在 Twitter 开发者平台上确保安全性的持续努力的一部分,任何使用 Twitter 登录的开发者都必须在 Twitter 应用程序设置的白名单中明确声明他们的回调 URL,当登录到您的应用程序仪表板时,可以在白名单中访问这些 URL。 developer.twitter.com 上的 Twitter 帐户。这意味着如果
callback_url
与 oauth/request_token 端点一起使用的参数未列入白名单,您将收到错误消息。
因此,在 Twitter 应用程序设置中,您必须添加您的 URL,例如
https://sitename.example.com/auth/twitter
,https://sitename.example.com/auth/twitter/callback
- 您想使用https://yourdomain.com?source=twitter作为回调 URL
- 将此添加到 Twitter 应用仪表板:https ://yourdomain.com
- 在调用 oauth/request_token 时使用它:https://yourdomain.com?source=twitter。
有关更多详细信息,请参阅此社区文章:- Twitter 回调 URL
推荐阅读
- python - 我可以使用 Edge 驱动程序禁用 selenium 中的 CSS 和图像吗?
- java - 片段无法在android上正确显示
- java - 无法在 Java 的 HashMap 中存储长类型变量
- php - 在php中调用数组中的第一个数据?
- sql - 在连接中使用的 Oracle SQL like 语句
- c# - 在单独的表中映射拥有的类型
- .net - .net windows服务多进程
- sql - 如何使用 select 语句中的更新设置唯一列值
- c# - 从 Windows 服务启动无交互控制台应用程序
- javascript - mapDispatchToProps 不起作用:未捕获的 TypeError:_this.props.addCountdown 不是函数