【问题标题】:chrome.identity.LaunchWebAuthFlow: How to implement logout in a web app using oauth2chrome.identity.LaunchWebAuthFlow:如何使用 oauth2 在 Web 应用程序中实现注销
【发布时间】:2018-01-07 15:39:10
【问题描述】:

我正在开发一些客户端 Web 应用程序,例如需要访问 Outlook 邮件和日历的 chrome 扩展程序。我按照https://dev.outlook.com/RestGettingStarted 上的说明成功获取了访问和刷新令牌以检索数据。

但是,我找不到任何实现“注销”的方法。基本思想是让用户退出并使用不同的 Outlook 帐户登录。为了做到这一点,我删除了缓存的令牌,以交互模式请求访问令牌。登录窗口确实弹出了,但它使用了任何有效的电子邮件地址,没有让我输入密码,最后返回了以前帐户的令牌。因此,在旧令牌过期之前,我无法真正使用其他帐户。

谁能告诉我是否可以发送撤销令牌的请求,以便人们可以使用不同的帐户?谢谢!

================================================ ========== 更新: 实际上这是 chrome.identity api 的错。我使用 chrome.identity.LaunchWebAuthFlow 来初始化身份验证流程。它缓存用户的身份,但无法删除它。因此,如果使用此 api,我们不能真正“注销”。

【问题讨论】:

  • 你能分享你的代码,让我们看看发生了什么吗?
  • 您是否尝试过将用户重定向到login.microsoftonline.com/logout.srf
  • 看来是我用来启动身份验证流程的 chrome.identity.LaunchWebAuthFlow 的问题。它缓存用户的身份,但不提供任何删除它的方法。如果您键入不同的帐户,chrome 会坚持使用旧帐户。有一个旧线程 (stackoverflow.com/questions/26080632/…) 谈论这个问题,但没有一个解决方案有效。
  • 基本是this issue,去star吧。
  • 我最终放弃了 LaunchWebAuthFlow api,原因有两个。第一个如上所述;第二个是它甚至没有带有“https://***”链接的地址栏,看起来很吓人。相反,我只是创建一个带有用于登录的 url 的新选项卡,并监听重定向事件以从重定向 url 获取令牌。

标签: google-chrome-extension oauth-2.0


【解决方案1】:

我通过 launchWebAuthFlow 使用了两次注销 - 首先我调用了我的应用程序的注销链接,然后我调用了 Google 的注销链接。

var options = {
    'interactive': false,
    'url': 'https://localhost:44344/Account/Logout'
}
chrome.identity.launchWebAuthFlow(options, function(redirectUri) {});

options = {
    'interactive': false,
    'url': 'https://accounts.google.com/logout'
}
chrome.identity.launchWebAuthFlow(options, function(redirectUri) {});

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2019-10-16
    • 1970-01-01
    • 2020-11-28
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多