javascript - Chrome 扩展程序中的 Firebase UI : signInSuccess never called

标签 javascript firebase google-chrome-extension firebase-authentication firebaseui

这让我很生气,所以在浪费了 3 天应用“直接”身份验证解决方案后将其发布在这里。希望任何人都可以阐明我所缺少的内容。

基本上,我已经在仪表板中设置了 faribes 应用程序,并在我的 chrome 扩展程序中成功启动了 farebase。当我放弃 firebasUI 进行电子邮件/密码身份验证时,它似乎工作正常 - 它成功检查电子邮件是否存在并显示相应的流程。对于注册,一旦流程完成,它就会在 firebase 数据库中创建一个用户。

问题在于,无论是在登录还是在注册流程中,都不会调用signInSuccess。 此外 firebase.auth().onAuthStateChanged(...) 始终返回 null user

如果我使用普通的 signInWithEmailAndPassword()/createUserWithEmailAndPassword() 一切正常,并且 onAuthStateChanged() 返回正确的用户。

下面是我在 chrome 扩展中使用的代码:

credentials.js(弹出脚本):

//init firebase
var config = {
    apiKey: "<my_key>",
    authDomain: "<my_domain>",
    databaseURL: "<my_dburl>",
    projectId: "<my_projectid>",
    storageBucket: "<my_storagebucket>",
    messagingSenderId: "<my_id>"
};
firebase.initializeApp(config);


//ui config for firebaseUI
var uiConfig = {
    signInSuccessUrl: 'http://google.com',
    credentialHelper: firebaseui.auth.CredentialHelper.NONE,
    callbacks: {
        signInSuccess: function(currentUser, credential, redirectUrl) {
            console.log('sign in success');
            console.log(currentUser);
            // alert(currentUser)
            return false;
        },
        uiShown: function () {
            console.log("uiShow");
        }
    },
    signInFlow: 'popup',
    signInOptions: [{
        provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,
        requireDisplayName: false
    }]
};

//launch the firebaseUI flow
var ui = new firebaseui.auth.AuthUI(firebase.auth());
ui.start('#firebaseui-auth-container', uiConfig);

credentials.html(弹出 html):

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Sample FirebaseUI App</title>
  <script src="https://www.gstatic.com/firebasejs/4.6.2/firebase.js"></script>
  <script src="https://cdn.firebase.com/libs/firebaseui/2.5.1/firebaseui.js"></script>
  <link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/2.5.1/firebaseui.css" />
  <script src="credentials.js"></script>

</head>
<body>
<!-- The surrounding HTML is left untouched by FirebaseUI.
     Your app may use that space for branding, controls and other customizations.-->
<h1>Welcome to My Awesome App</h1>
<div id="firebaseui-auth-container"></div>
</body>
</html>

list :

{
  "manifest_version": 2,
  "name": "Some Name",
  "description": "Some description",
  "version": "0.1",
  "icons": {
    "128": "icon.png"
  },
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "credentials.html"
  },
  "background": {
    "page": "background.html"
  },
  "permissions": [
    "identity",
    "https://*/*",
    "activeTab",
    "background"
  ],

  "content_security_policy":"script-src 'self' https://www.gstatic.com https://apis.google.com https://www.googleapis.com https://securetoken.googleapis.com https://*.firebaseio.com https://cdn.firebase.com https://www.google.com; object-src 'self'",

  "oauth2": {
    "client_id": "<numbers.letters.apps.googleusercontent.com>",
    "scopes": [
      "https://www.googleapis.com/auth/userinfo.email",
      "https://www.googleapis.com/auth/userinfo.profile"
    ]
  },
  "key":"<my_chrome_extension_key>"
}

注意:似乎我可以输入任何 client_id 并且没有任何区别(firebaseUI 不起作用,而 firebase 起作用无论如何)

我正在关注this github步骤并使用存储库中的代码库

非常感谢您的任何意见。

最佳答案

看来这是 firebaseUI 中的一个错误:

不要使用此链接:

  <script src="https://cdn.firebase.com/libs/firebaseui/2.5.1/firebaseui.js"></script>

我现在正在使用这个:

<script src="https://www.gstatic.com/firebasejs/ui/2.5.1/firebase-ui-auth.js"></script>

现在它可以工作了 - 感谢 bojeil-google感谢支持!

关于javascript - Chrome 扩展程序中的 Firebase UI : signInSuccess never called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553071/

相关文章:

node.js - NodeJS Firestore 身份验证 - 权限被拒绝

Android Firebase 无法将 java.util.HashMap 类型的值转换为字符串

javascript - 如何将 background.js 中的自定义函数用于 Chrome 扩展程序?

javascript - 使用原始 XMLHttpRequest 批量删除 Google Drive 上的文件

javascript - 带有 'and' 运算符的 Perl/Javascript 正则表达式

javascript - 我希望能够根据角色类别及其阵营选择神灵列表

javascript - 如何从客户端使用 firestore 模拟器

javascript - chrome.runtime.sendMessage 引发 "Uncaught TypeError: Cannot call method ' 未定义的 sendMessage'

javascript - 使用 javascript 在 6 x 6 的表格中生成 div

javascript - Elixir : How to Watch a Public Directory for Change?