Javascript Chrome扩展:如何获取用户名?

Javascript Chrome扩展:如何获取用户名?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在创建一个Google chrome扩展。对于某些功能,我需要用户的系统登录名(无密码)。通过使用JavaScript,不可能做到这一点 有人建议使用NPAPI,但我不知道,所以我退出了 接下来,我将尝试在Chrome浏览器中获取用户名。但仍然没有成功 我试着用一些东西,比如: var currentUser; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(data) { if (xhr.read

我正在创建一个Google chrome扩展。对于某些功能,我需要用户的系统登录名(无密码)。通过使用JavaScript,不可能做到这一点

有人建议使用NPAPI,但我不知道,所以我退出了

接下来,我将尝试在Chrome浏览器中获取用户名。但仍然没有成功

我试着用一些东西,比如:

var currentUser; 
var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function(data) { 
  if (xhr.readyState == 1) { 
    currentUser = null; 
    if (xhr.status == 200) 
    {
      var re = new RegExp(/<b class="?gb4"?>[\s]*([^<]+@[^<]+)      <\/b>/i); 
      var m = re.exec(xhr.responseText); 
      if (m && m.length == 2) { 
        currentUser = m[1]; 
      } 
    } 
    console.log("Currently logged user (on google.com): " +   currentUser); 
  } 
}; 
xhr.open('GET', ' https://myaccount.google.com/?pli=1', false); 
xhr.send(); `
var-currentUser;
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=函数(数据){
如果(xhr.readyState==1){
currentUser=null;
如果(xhr.status==200)
{

var re=new RegExp(/[\s]*([^首先,您说您需要此登录信息来识别用户,并将其用作主键

自动取消系统登录名的资格:它们不是唯一的

现在,让我们回到登录的Chrome用户。谷歌帐户是相当独特的

这里有两种方法

  • Chrome既是电子邮件,也是帐户的唯一ID,这对你来说可能更好

    您需要
    “identity”
    “identity.email”
    权限。然后:

    chrome.identity.getProfileUserInfo(function(userInfo) {
     /* Use userInfo.email, or better (for privacy) userInfo.id
        They will be empty if user is not signed in in Chrome */
    });
    
  • 另一种方法是在您的服务上使用谷歌的OAuth。同样,请参阅
    chrome.identity
    文档


  • Chrome.identity有一个getProfileUserInfo方法,但它只提供主用户的详细信息

    还有一种选择:


    当你打开chrome时,你启动到主屏幕上,你应该能够看到右上角的一个圆圈,显示登录用户的图像。你可以使用DOM访问它。一旦你这样做,你将能够获得所有登录用户的信息。

    谢谢Xan的帮助,我正在使用chrome.identity.getProfileUserInfo a这满足了我的目的,但在应用它时,我得到了错误。在清单中,我添加了权限“permissions”:[“tabs”,“idle”,“identity”,“identity.email”],在js文件中,我添加了chrome.identity.getProfileUserInfo(函数(userInfo){console.log(userInfo);//console.log(userInfo.id);});只是为了查看O/P。然而,我得到了错误Uncaught TypeError:无法读取未定义的属性“getProfileUserInfo”,我必须在代码中改进哪些内容,我是否需要从google控制台获得一些密钥?我需要改进什么?我还需要在清单中添加其他内容吗?您是否试图从内容脚本中执行此操作(该API在那里不可用)?你重新加载扩展了吗?从后台脚本,而不是内容脚本。很抱歉,最近的评论,xan给出的答案有效,问题是它只对chrome应用有效,我在chrome扩展上尝试过。谢谢你的支持,现在我更明白了。是的。除了这是一个特权
    chrome://
    页面,无法访问被扩展所困扰。@Xan:哦,我不知道。我必须做一个扩展,循环使用所有登录的gmail帐户,所以为此我做了我写的,它工作得很好。它确实适用于gmail网站DOM,但不适用于新的标签页。@Xan:哦,非常感谢你告诉我这个!