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"權限。