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

11

我正在创建一个 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(); `

依然没有成功。

我的整个目的是获取用户名称(无论是桌面登录名称还是Chrome登录名称),但我无法获得它。

我需要将此用户名作为参数发送到我的服务中,因为用户名充当主键。

2个回答

25

首先,您说需要此登录信息来识别用户,并将其用作主键。

这自动排除了系统登录名称:它们不是唯一的

现在,让我们回到已登录的Chrome用户。Google账户是相当独特的。

这里有两种方法可供选择。

  1. Chrome 的 chrome.identity API 可以提供 电子邮件和账户的唯一 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 */
    });
    
  2. 另一种方法是在您的服务中使用Google的OAuth。同样,请参阅chrome.identity文档。


2
请从后台脚本执行,而不是内容脚本。 - Zig Mandel
很抱歉晚了才回复,xan 给出的答案确实管用,只是它只适用于 Chrome 应用程序,我当时试图在 Chrome 扩展中使用。感谢您的支持,现在我更好地理解了。 - Akash R
我知道,它应该也可以在扩展上运行,但对我来说,在应用程序上运行更好。谢谢你的帮助。 - Akash R
ProfileUserInfo仅提供主要登录电子邮件,如果我想获取所有已登录帐户的电子邮件怎么办?(我可以同时登录多个帐户) - Shubham Aggarwal
@Shubham Aggarwal,你应该与当前用户一起工作,当前用户已安装他们的扩展程序。因此,它应该按照这种方式工作。你不应该获取未安装你的扩展程序的用户的信息。 - titusfx
显示剩余4条评论

0

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

有一个替代方案:

当您打开Chrome时,您会进入主屏幕,您应该能够在右上角看到一个圆圈,显示已登录用户的图像。您可以使用DOM访问它。一旦您这样做,您将能够获取有关所有已登录用户的信息。


是的。除非这是一个特权的 chrome:// 页面,否则无法被扩展访问。 - Xan
@Xan:哦,我不知道这个。我必须制作一个扩展程序来循环遍历所有已登录的Gmail帐户,所以为此我做了我写的内容,而且它运行得很好。 - Shubham Aggarwal
它确实适用于Gmail网站的DOM,但不适用于新标签页。 - Xan
@Xan:哦,非常感谢你告诉我这个! - Shubham Aggarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接