如何使用 flutter_appauth 注销?

Hos*_*our 6 authentication openid-connect flutter

我需要在 flutter 中按下按钮从flutter_appauth注销;

该软件包没有任何注销方法。

这是我的获取令牌代码:

appAuth.authorizeAndExchangeCode(AuthorizationTokenRequest(
                clientID, redirectUrl,
                discoveryUrl: discoveryUrl,
                scopes: scopes,
                clientSecret: clientSecret
Run Code Online (Sandbox Code Playgroud)

Moh*_*azi 6

在该包中,没有任何解决方案,但这个问题可以通过两种方式解决:

  1. 这是您的浏览器,因此您可以清除浏览器的缓存:)

  2. 当您调用授权和交换代码的方法时,需要添加一个名为“promptValues”的附加参数,其中包含“login”值。这样,每次登录时,缓存中就没有任何值,并且总是要求重新登录。

做这个 :

final AuthorizationTokenResponse result =
    await appAuth.authorizeAndExchangeCode(
      AuthorizationTokenRequest(
        your_client_id,
        your_localhost,
        promptValues: ['login'],
        discoveryUrl:
        your_discovery_url,
        scopes: [your_scopes],
      ),
    );
Run Code Online (Sandbox Code Playgroud)


Gar*_*her 5

这里有两个主要选项,作为第一步,我会看看你是否可以使第一个选项起作用,与穆罕默德的评论一致:

选项 1:简单注销

只需从您的应用程序中删除任何存储的令牌即可。这样做的问题是它不会删除授权服务器会话 Cookie。因此,默认情况下,您不能强制另一个登录提示,例如以新用户身份登录。解决此问题的一种方法是在执行登录重定向时发送prompt=login作为参数。

选项 2:完全注销

完全注销涉及这两个操作,并且可能需要您深入了解 AppAuth 的内部结构:

  • 从您的应用程序中删除存储的令牌
  • 通过结束会话请求重定向以删除授权服务器会话 cookie

这是我的一些示例 Android 代码,用于启动 Chrome 自定义选项卡以进行注销重定向。

还有其他潜在问题,例如由于缺少用户手势,Chrome 间歇性出现白屏,注销后无法返回应用程序。

更多信息

我的博客文章提供了有关 AppAuth 集成的更多详细信息,以及您可以运行的代码示例(以防万一这些内容有用)。我直接使用 Kotlin / Swift 中的 AppAuth 库,而您需要处理 Flutter 插件的附加层: