【问题标题】:How do I implement user authentication in a Chrome Extension using Google App Engine as backend?如何在使用 Google App Engine 作为后端的 Chrome 扩展程序中实现用户身份验证?
【发布时间】:2011-12-11 10:14:34
【问题描述】:

这是对my previous question 的跟进。

我正在开发一个 Chrome 扩展程序 http://ting-1.appspot.com/,它将书签页面保存到 Google App Engine 后端。查看 Chrome 网上商店,我看到扩展程序有一个“添加到 chrome”按钮。由于我的扩展程序需要与后端通信(因此用户必须有一个gmail帐户才能使用此扩展程序)我如何在扩展程序中指明使用用户名(将扩展程序添加到Chrome的人的gmail地址)来编写使用他的用户 ID 将书签添加到谷歌应用引擎?我的理解存在差距,我似乎没有在文档中找到与此问题相关的任何内容。我的background.html 在下面。谢谢。

background.html

<html>
<script>
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null, function(tab) {

  // Send a request to the content script.
  chrome.tabs.sendRequest(tab.id, {action: "getDOM"}, function(response) {
    var firstParagraph = response.dom;
    console.log("background -- before *console.log(response.dom)*")
    console.log("this is *console.log(response.dom)*: " + response.dom)
    console.log("background -- after *console.log(response.dom)*")
  //}); moved to end to get the variable firstParagraph

var formData = new FormData();
formData.append("url", tab.url);
formData.append("title", tab.title);
formData.append("pitch", firstParagraph);

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://ting-1.appspot.com/submithandlertest", true);
xhr.onreadystatechange = function (aEvt) {
    if (xhr.readyState == 4) {
        if (xhr.status == 200){ 
            console.log("request 200-OK");
            chrome.browserAction.setBadgeText ( { text: "done" } );
            setTimeout(function () {
            chrome.browserAction.setBadgeText( { text: "" } );
            }, 2000);
        }else{
            console.log("connection error");
            chrome.browserAction.setBadgeText ( { text: "ERR" } );
     }        
  }        
};
xhr.send(formData);
}); //chrome.tabs.sendRequest
        });
    });
</script>
</html>

【问题讨论】:

    标签: javascript google-app-engine google-chrome-extension


    【解决方案1】:

    您的扩展程序需要将用户发送到您的应用进行登录,以便设置适当的 cookie,并且您的扩展程序可以作为用户进行身份验证。 Chrome to Phone 扩展程序会执行此操作,您可以examine its source 了解如何操作。

    【讨论】:

    • 感谢您的参考。但我不确定是否需要对用户进行身份验证,因为 App Engine 的用户服务会这样做。这就是我的想法:获取安装扩展程序的用户的电子邮件并将其发送到应用程序并将书签写入该用户的数据库。当用户登录到应用程序时,他只会看到自己的书签。我还需要身份验证吗?我在 chrome 扩展下问了另一个问题。 stackoverflow.com/questions/7855830/…
    • @Zeynel 通过“验证用户”,我的意思是您需要让用户使用浏览器登录,以便您设置适当的 cookie。您不应该只让他们提供电子邮件地址 - 他们可以提供其他人的电子邮件地址并为他们设置书签。您绝对应该查看 Chrome to Phone 应用程序以及它是如何工作的。
    • 谢谢。我首先阅读了有关 GAE 和 Chrome 扩展 OAuth 的教程,以了解 Chrome to Phone 的代码。我不明白的是,我并没有试图访问用户的私人信息或凭据。正如你所说,我只需要确认用户给 Chrome 扩展程序的电子邮件确实是他的电子邮件。为此,我考虑让用户先登录到 GAE 应用程序,然后从那里单击一个按钮,然后将 user = users.get_current_user() 作为 url 参数发送到扩展程序。你觉得这个选项怎么样?
    • 我问了一个关于将 url 参数从应用程序发送到扩展程序的新问题:stackoverflow.com/questions/7880334/…,我将在您的博客中投票支持有关 GAE 和 Chrome 扩展程序的 OAuth 的教程。再次感谢。
    • @Zeynel 在这里使用 OAuth 没有必要,甚至没有好处 - 使用标准 Accounts API 更简单,并且完全符合您的要求。
    猜你喜欢
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2014-06-22
    • 2015-04-23
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    相关资源
    最近更新 更多