Chrome扩展弹出窗口

时间:2016-01-26 13:36:45

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

我尝试在Chrome扩展程序中使用身份验证(电子邮件/密码)。如果我将我的身份验证代码放在后台脚本中,我似乎工作正常。但是,我似乎无法将其作为浏览器操作脚本使用。

我使用以下代码作为扩展程序的基础:https://github.com/firebase/firebase-chrome-extension

我将browser_action.js更改为:

Firebase.enableLogging(true);
var f = new Firebase('https://myapp.firebaseio.com/');

f.authWithPassword({    
    email    : "a@b.cd",
    password : "1234"
}, function(error, authData) {
    if (error) {
        alert("Login Failed!", error);
} else {
    alert("Authenticated successfully with payload:", authData);
}
});

我保持现有的browser_action.html不变:

<!doctype html>


<style type="text/css">
    #mainPopup {
        padding: 10px;
        height: 200px;
        width: 400px;
        font-family: Helvetica, Ubuntu, Arial, sans-serif;
    }
    h1 {
        font-size: 2em;
    }
</style>

<div id="mainPopup">
<h1>Firebase test!</h1>
<p>Clicks: <span id="contents"></span></p>
</div>

<script type="text/javascript" src="https://cdn.firebase.com/v0/firebase.js"></script>
<script src="browser_action.js"></script>

当我加载扩展程序并单击图标时,它在控制台中显示以下错误:

Uncaught TypeError: f.authWithPassword is not a function

如果我将firebase代码和身份验证代码移动到background.js文件,它会起作用并向我发出一个警告,表明它已经过成功验证。

我做错了什么或为什么这不可能?

2 个答案:

答案 0 :(得分:4)

该示例Chrome扩展程序尚未在3年内更新,因此其Firebase版本已过时。将https://cdn.firebase.com/v0/firebase.js替换为https://cdn.firebase.com/js/client/2.2.1/firebase.js中的browser_action.html,您应该能够成功使用authWithPassword

答案 1 :(得分:3)

对于自2016年7月以来遇到此问题的任何人,Firebase都会提供有关如何为Chrome扩展程序设置身份验证的更新说明(在他们的示例中,他们使用Google Auth)。在遇到这篇文章之前,我跳了一堆篮球..希望能节省一些时间。 https://github.com/firebase/quickstart-js/tree/master/auth/chromextension