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

谢谢。这个答案看起来不错,还没有尝试过,但希望它能帮助我。我应该寻找第二部分?有什么遗漏吗? –

相关问题