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

Chrome Extension: How to get user name?

我正在创建一个 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 登录名),但我无法获取。

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

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

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

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

这里有两种方法。

  1. Chrome 的 chrome.identity API can provide 电子邮件地址和帐户的唯一 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 文档。

Chrome.identity 有一个方法 getProfileUserInfo 但它只给出主要用户的详细信息。

还有一个选择:

当您打开 chrome 时,您会启动到主屏幕,您应该能够在右上角看到一个显示已登录用户图像的圆圈。您可以使用 DOM 访问它。执行此操作后,您将能够获得有关所有登录用户的信息。