从Chrome扩展程序登录我的网站

时间:2011-09-02 17:21:56

标签: login google-chrome-extension

我有一个网站,登录的用户可以填写表格来发送信息。我希望我的用户也可以通过Chrome扩展程序执行此操作。我设法获取表单以提供信息,但我只想登录用户才能这样做。当用户首次打开扩展时,它就像是推特或Springpad扩展,它必须登录或注册。我在堆栈溢出时看到了以下答案:Login to website with chrome extension and get data from it

我试了一下,把这段代码放在background.html中:

function login() {
    $.ajax({
        url: "http://localhost/login", type: "GET", dataType: "html", success: function() {
            $.ajax({
                url: "http://localhost/login", type: "POST", data: {
                    "email": "me@alberto-elias.com",
                    "password": "mypassword",
                },
            dataType: "html",
            success: function(data) {
               //now you can parse your report screen
            }
            });
        }
    }); 
}

在我的popup.html中,我输入以下代码:

var bkg = chrome.extension.getBackgroundPage()
$(document).ready(function() {
    $('#pageGaffe').val(bkg.getBgText());  
    bkg.login();        
});

在我的服务器上,在node.js中,我有一个console.log,当他登录时显示用户信息,所以我看到当我加载我的扩展时,它确实登录。问题是如何让用户自己登录,而不是手动将我的详细信息放在代码中,如何保持登录在扩展中以及提交表单时,将用户的详细信息发送到网上。

我希望我能够正确地解释自己。

感谢。

2 个答案:

答案 0 :(得分:17)

在回答此问题之前,我想提醒您,如果您声明了make cross origin xhr from your content scripts,那么您可以{3}}从Chrome 13开始permissions。以下是页面摘录

  

版本说明:从Chrome 13开始,内容脚本可以向与其他扩展程序相同的服务器发出跨源请求。在Chrome 13之前,内容脚本无法直接发出请求;相反,它必须向其父扩展发送一条消息,要求扩展程序发出跨域请求。

说到点。您只需从您的扩展(内容脚本或背景页面)向您的域创建XmlHttpRequest并等待响应。

在服务器

阅读请求和会话cookie。如果会话有效,请发送正确的响应,否则发送错误代码。 401或其他任何内容。

在客户

如果响应正确显示,则显示指向您网站登录页面的登录链接。

工作原理:

如果启用了用户浏览器中的cookie,它将起作用。每当用户登录到您的网站时,您的服务器都会设置一个驻留在用户浏览器中的会话cookie。现在,对于浏览器发送到您的域的每个请求,都会传输此cookie。即使请求来自Google Chrome扩展程序,也会传输此Cookie。

买者

确保向用户显示正确的提示,表明他们已登录到您的应用程序。由于您的用户界面主要位于扩展程序中,因此用户可能不知道他们与您的网站的有效会话,并且他们可能会留下无人参与的活动会话,如果用户从公共互联网信息亭访问它,则可能会被滥用。< / p>

参考

您可以查看我使用我的扩展程序here执行的类似实现。

答案 1 :(得分:0)

因此用户登录到您的服务器就知道了。如果您希望用户能够使用这些凭据或具有这些凭据的第三方网站浏览您的网站,我会感到有点困惑。

如果是您的网站,那么您应该能够设置一个cookie来指示他们是否已登录。然后在他们浏览您的网站时检测此服务器端。

如果它是第三方网站,那么您可以做的最好的事情是创建一个内容脚本,该脚本填写登录表单并为其自动提交或分析登录发布数据并自行发送,然后强制刷新。