0

作为我正在构建的Google Chrome扩展程序的一部分,我需要能够判断用户是否在启用了扩展程序的情况下登录Google Chrome浏览器。谷歌浏览器扩展程序:如何确定用户是否已登录Chrome浏览器?

我该怎么做?

请注意,使用OAuth2(因此,the chrome.identity API)超出了我的项目范围,所以我需要找到另一种方式。

编辑:我的问题不是这个one的重复,因为该线程中的解决方案不再有效。

+0

chrome.identity是唯一的api。你为什么需要另一种方式? –

+0

[检测用户是否从Chrome扩展程序登录]可能的重复(http://stackoverflow.com/questions/2971491/detecting-whether-user-is-logged-in-or-not-from-a -chrome-extension) –

+0

你应该澄清你是否意味着登录chrome,例如从chrome://设置页面,或者只登录到Google帐户,而无需登录chrome本身。 – kzahel

回答

2

检查LSID cookie设置:

chrome.cookies.get({url:'https://accounts.google.com', name:'LSID'}, function(cookie) { 
    if (cookie) { 
     console.log('Sign-in cookie:', cookie); 
    } 
}); 

manifest.json的权限:"cookies", "https://accounts.google.com/"

+0

我刚测试过这个地方:1.)用户登录到Gmail而不是Chrome浏览器; 2.)用户已登录Gmail和Chrome浏览器。看起来,两种情况下检索到的cookie都是相同的。即使用户登录到Gmail,是否还有任何cookie信息可以告诉我该用户是否未登录Chrome浏览器? – user5508297

+1

我不知道,对不起。尝试戳该域上的其他cookie,可能使用cookie编辑器扩展。 – wOxxOm

+0

似乎会检测到网站登录,而不是Chrome登录。我研究过,似乎唯一可能的方式是在电子邮件范围内的清单中使用chrome.identity。那么如果电子邮件为空,则用户未登录。 –

0
chrome.identity.getAuthToken({interactive: false}, function (token) { 
    if (!token) { 
     if (chrome.runtime.lastError.message.match(/not signed in/)) { 
      console.log("not singed in"); 
     } else { 
      console.log("singed in"); 
     } 
    } 
}); 

而且不要忘记添加"identity"权限。