有没有一种简单的方法可以从 Chrome 扩展程序中检测到用户是否登录了他的谷歌账户。
我想有一种讨厌的方法可以通过加载需要身份验证的 html/css/js 资源来解决这个问题。但我想以“清晰”的方式做到这一点。
谢谢,最好的,维克多
有没有一种简单的方法可以从 Chrome 扩展程序中检测到用户是否登录了他的谷歌账户。
我想有一种讨厌的方法可以通过加载需要身份验证的 html/css/js 资源来解决这个问题。但我想以“清晰”的方式做到这一点。
谢谢,最好的,维克多
在 chromium-extensions 邮件列表中对此进行了一些讨论: http ://groups.google.com/a/chromium.org/group/chromium-extensions/browse_thread/thread/6e46a3a6e46d9110/
基本上,正如用户建议的那样,如果当前用户已登录,您将向 google.com 发送一个 Xml Http 请求,并通过正则表达式进行搜索:
资料来源:Guillaume Boudreau(在 chromium-extensions 邮件列表上)
var currentUser;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(data) {
if (xhr.readyState == 4) {
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://www.google.com/', false);
xhr.send();
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"权限。