Flutter 如何使用Flatter_appauth注销?

Flutter 如何使用Flatter_appauth注销?,flutter,authentication,openid-connect,Flutter,Authentication,Openid Connect,我需要退出与按钮按下在颤振 此包没有任何注销方法 这是我的get令牌代码: appAuth.authorizeAndExchangeCode(AuthorizationTokenRequest( clientID, redirectUrl, discoveryUrl: discoveryUrl, scopes: scopes, clientSecret: clientS

我需要退出与按钮按下在颤振

此包没有任何注销方法

这是我的get令牌代码:

appAuth.authorizeAndExchangeCode(AuthorizationTokenRequest(
                clientID, redirectUrl,
                discoveryUrl: discoveryUrl,
                scopes: scopes,
                clientSecret: clientSecret

在该软件包中,没有任何解决方案,但此问题通过两种方式解决:

  • 它是您的浏览器,因此您可以清除浏览器的缓存:)

  • 当您调用用于授权和交换代码的方法时,需要添加一个名为“promptValues”的附加参数,该参数具有“login”值。这样,每次登录时,缓存中都没有任何值,它总是要求重新登录

  • 这样做:

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

    这里有两个主要选项,作为第一步,我将根据穆罕默德的评论,看看你能否让第一个选项起作用:

    选项1:简单注销

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

    选项2:完全注销

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

    • 从应用中删除存储的令牌
    • 重定向以通过结束会话请求删除授权服务器会话cookie
    下面是一些为注销重定向设置Chrome自定义选项卡的方法

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

    进一步信息

    我的博客文章中有一些关于AppAuth集成的详细信息,以及您可以运行的代码示例,以防这些有用。我直接从Kotlin/Swift使用AppAuth库,而您需要处理颤振插件的附加层:


      • 2021年更新: 只需按如下方式打开注销页面:

          if (await canLaunch(logoutUrl)) {
            await launch(logoutUrl);
          }
        
        • 记住:在注销过程之后,必须重定向到自定义方案(在build.gradle文件中添加)

        我用一个技巧解决了注销问题! 我用注销链接打开浏览器。然后重定向到[自定义url]。然后使用AppLink返回应用程序

        这是我注销的方式:

      • 按照以下步骤为您的应用程序创建密钥库

      • 使用以下命令从[生成的密钥].jks获取证书指纹SHA256

      • keytool-list-v-keystore[generated key].jks

      • 使用以下内容创建AssetLink.json文件:
      • 把它放在桌子上

        https://[自定义url]/.well-known/assetlinks.json

      • 在清单中添加一个意向过滤器,如下所示:
      • 
        
        当开发人员从他的github中删除此回购时,为什么要使用此软件包。@MohammadMirshahbazi我正在使用Flatter_appauth。问题中的url已修复。在你编辑这个链接之前,我们看到@MohammadMirshahbaziI知道,这是我的错误。我的Flatter_appauth packageOk bro有注销问题,我想,等等,我解决了你的问题。我只需要一个注销函数。它不应该在每次登录时请求登录信息!据我所知,目前还没有注销的方法,但使用该解决方案,您可以在每次登录时清除缓存,因此您注销是因为您的缓存是干净的,请尝试一下。这是有效的。我如何才能清除缓存?Flatter_appauth使用内置的webview,我无法访问它。我还删除了getTemporaryDirectory目录,但没有任何效果。您是否将刷新令牌存储在案例中的某个位置,以便让您的用户对其进行签名?
        
        
            [
              {
                "relation": [
                  "delegate_permission/common.handle_all_urls"
                ],
                "target": {
                  "namespace": "android_app",
                  "package_name": "[app.package.name]",
                  "sha256_cert_fingerprints": [
                    "The Certificate fingerprints, SHA256 created in step 2."
                  ]
                }
              }
            ]