0

我建立一個瀏覽器擴展程序中,我對background.js的谷歌登錄認證使用chrome.identity沒有顯示所有已登錄谷歌帳戶上彈出

chrome.identity.getAuthToken({ 
     interactive: true 
    }, function(token) { 
     if (chrome.runtime.lastError) { 
      alert(chrome.runtime.lastError.message); 
      return; 
     } 
     var x = new XMLHttpRequest(); 
     x.open('GET', 'https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=' + token); 
     x.onload = function() { 
      alert(x.response); 
     }; 
     x.send(); 
    }); 

當這個函數被調用時,出現一個窗口顯示登錄的谷歌帳戶(如果有),但我的問題是它只顯示1個帳戶,但我登錄了5個帳戶在瀏覽器中。

有什麼我在這裏錯過了嗎?

而且我還需要知道如何編寫註銷功能?

+0

只有1個帳戶對於Chrome,並且該API僅適用於它。 –

+0

在用於web應用程序的api之間是否有區別像stackoverflow和Chrome擴展? –

回答

1

chrome.identity將使用chrome://settings中「已登錄」的帳戶。如果未登錄Chrome,則會彈出一個標籤,讓您可以「登錄」Chrome瀏覽器,即將當前個人資料和Google帳戶關聯起來。

如果你想顯示簡單地簽署了所有帳戶,您將需要手動創建一個彈出窗口(例如,使用chrome.tabs.createwindow.open和具有重定向URL回到你的服務器,然後傳達給你的擴展(例如使用sendMessageonMessageExternal),或者如果你有tabs許可,您可以重定向使用urn:ietf:wg:oauth:2.0:oob:auto爲您重定向URL,這將使的OAuth授予出現在window.title,您可以與您的tabs權限讀取。

+0

聽起來不錯,但無法正確理解如何使用Google創建正確的登錄。您是否有任何示例或代碼使用Chrome在Chrome擴展上登錄? –

+0

看看這個答案:https://stackoverflow.com/a/32548057/1236215(第二部分,它使用chrome.tabs.onUpdated來尋找window.title) – kzahel

+0

謝謝。這個答案看起來不錯,還沒有嘗試過,但希望它能幫助我。我應該尋找第二部分?有什麼遺漏嗎? –

相關問題