Chrome扩展程序:获取用户名

Aka*_*h R 6 javascript google-chrome username google-chrome-extension

我正在创建一个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(); `
Run Code Online (Sandbox Code Playgroud)

仍然没有成功.

我的整个日程是获取用户名(桌面登录名或Chrome登录名),但我无法得到它.

(从评论中添加) 我需要将此用户名作为参数发送到我的服务,因为用户名作为主键.

Xan*_*Xan 14

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

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

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

这里有两种方法.

  1. Chrome的chrome.identityAPI既可以提供电子邮件,也可以为您的目的提供帐户的唯一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 */
    });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另一种方法是在您的服务上使用Google的OAuth.再次,请参阅chrome.identity文档.

  • 从后台脚本而不是内容脚本执行此操作。 (2认同)