【问题标题】:Firebase+Javascript Convert anonymous account to permanent - Error: response is not definedFirebase + Javascript将匿名帐户转换为永久帐户-错误:未定义响应
【发布时间】:2018-01-26 15:31:01
【问题描述】:

我正在尝试建立一个网站,用户可以首先使用 firebase 匿名登录,然后通过使用 facebook 登录将他的帐户转换为永久帐户。我按照https://firebase.google.com/docs/auth/web/anonymous-auth 给出的说明进行操作,但出现以下错误“未捕获的引用错误:未定义响应”。我还尝试使用 Google 登录转换帐户,但随后出现错误“未定义 googleUser”。我做错了什么?

这是我的代码:-

  <html>
  <body>
    <button onclick = "anonymousLogin()">Anonymous Signin</butto>
    <button onclick = "facebookSignin()">Facebook Signin</button>
    <button onclick = "facebookSignout()">Facebook Signout</button>
  </body>


 <script>
    function anonymousLogin(){
          firebase.auth().signInAnonymously().catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code; console.log(errorCode)
            var errorMessage = error.message; console.log(errorMessage)
          });
     }

    function facebookSignin() {
     var provider = new firebase.auth.FacebookAuthProvider();

     var credential = firebase.auth.FacebookAuthProvider.credential(
        response.authResponse.accessToken);

     auth.currentUser.link(credential).then(function(user) {
       console.log("Anonymous account successfully upgraded", user);
      }, function(error) {
      console.log("Error upgrading anonymous account", error);
     });
    }

  </script>
</html>

【问题讨论】:

  • 代码的哪一部分产生了该错误?
  • 这部分 var credential = firebase.auth.FacebookAuthProvider.credential(response.authResponse.accessToken);
  • 看看你如何将response.authResponse.accessToken 作为参数传递...response 是什么?您没有显示任何创建名为 response 的变量的代码
  • 我没有创建变量“响应”。我刚刚从 firebase 文档中复制粘贴了该代码。我假设 firebase 自己处理它?
  • 文档不是完整的代码-

标签: javascript firebase firebase-authentication facebook-login


【解决方案1】:

好的,我找到了解决方案。显然,从匿名用户转换为 Facebook 用户需要您自己找到令牌。我找到了这个解决方法。

 var provider = new firebase.auth.FacebookAuthProvider();
 firebase.auth().currentUser.linkWithPopup(provider)

【讨论】:

    【解决方案2】:

    我认为response这里指的是Facebook登录传递给回调的事件。 Facebook traditionally calls this response,但 our Github sample 称它为 events。名称当然不重要,但您并没有为回调声明它。

    function facebookSignin(response) {
     var provider = new firebase.auth.FacebookAuthProvider();
    
     var credential = firebase.auth.FacebookAuthProvider.credential(
        response.authResponse.accessToken);
    

    另见https://github.com/firebase/quickstart-js/blob/master/auth/facebook-credentials.html#L81

    【讨论】:

    • 试过了。现在出现此错误 - 未捕获的类型错误:无法读取未定义的属性 'authResponse'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2019-11-05
    • 1970-01-01
    • 2018-09-12
    • 2018-04-28
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多