首页 > 解决方案 > 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"}

标签: javascriptfirebaseauthenticationfirebase-authentication

解决方案


对于 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/twitterhttps://sitename.example.com/auth/twitter/callback

有关更多详细信息,请参阅此社区文章:- Twitter 回调 URL


推荐阅读