如何注销chrome.identity oauth提供程序

时间:2014-09-28 00:59:43

标签: google-chrome-extension oauth

我使用chrome.identity登录Chrome扩展程序中的第三方oauth提供程序。它适用于登录 - 当我使用launchWebAuthFlow时,我会看到第三方登录屏幕,并在登录流程后重定向回我的应用程序。

但是,我找不到在我的扩展程序中启用注销功能的方法。似乎不是清除缓存的登录标识的功能。下次调用launchWebAuthFlow时,它会自动以第一个用户身份登录,而不会提示我再次登录。

有没有办法清除chrome.identity插件的登录状态?

8 个答案:

答案 0 :(得分:15)

我不了解具体的第三方提供商。但是当我使用带有chrome.identity.launchWebAuthFlow()的Google Oauth时,我遇到了类似的问题。我可以登录用户,但不能使用removeCachedAuthToken()

注销

在这种情况下,要注销用户,我将chrome.identity.launchWebAuthFlow()与Google的注销网址一起使用,而不是使用oauth网址

chrome.identity.launchWebAuthFlow(
    { 'url': 'https://accounts.google.com/logout' },
    function(tokenUrl) {
        responseCallback();
    }
);

这很好用。

答案 1 :(得分:6)

我发现在序列中调用这两个是有效的:

var url = 'https://accounts.google.com/o/oauth2/revoke?token=' + token;
window.fetch(url);

chrome.identity.removeCachedAuthToken({token: token}, function (){
  alert('removed');
});

答案 2 :(得分:3)

您应该将prompt=select_account添加到您的身份验证网址。你的问题将得到解决。

  

https://accounts.google.com/o/oauth2/auth?client_id= {的clientId}&安培; RESPONSE_TYPE =令牌安培;范围= {作用域}&安培; REDIRECT_URI = {的redirectUrl}&安培;提示= select_account

答案 3 :(得分:1)

对我来说,https://accounts.google.com/logout不起作用。但https://accounts.google.com/o/oauth2/revoke?token=TOKEN效果很好,使用简单的window.fetch(url),而不是hrome.identity.launchWebAuthFlow

答案 4 :(得分:0)

您可以使用chrome.identity.removeCachedAuthToken(object details, function callback)方法清除身份缓存 https://developer.chrome.com/apps/identity#method-removeCachedAuthToken

答案 5 :(得分:0)

我最近遇到了同样的问题,最后通过在登录网址中添加login_hint=<new_user>prompt=consent解决了这个问题。

答案 6 :(得分:0)

只有通过这种实现,我才能取得结果

  chrome.identity.getAuthToken({ 'interactive': false }, currentToken => {
    if (!chrome.runtime.lastError) {
      // Remove the local cached token
      chrome.identity.removeCachedAuthToken({ token: currentToken }, () => {})

      // Make a request to revoke token in the server
      const xhr = new XMLHttpRequest()
      xhr.open('GET', `${googleRevokeApi}${currentToken}`)
      xhr.send()

      // Update the user interface accordingly
      // TODO: your callback
    }
  })

答案 7 :(得分:-1)

如果您尝试 launchWebAuthFlow 登出但出现需要用户交互错误,那么您需要再添加一个标记以及url:

chrome.identity.launchWebAuthFlow (
  {'url': 'https://some-logout-url/',
   'interactive': true },
   function(result) {
     console.log(result);
   }
);