ios - 使用代码交换检索令牌时,iOS 上的 Flutter Auth 挂起
问题描述
我在颤振中有以下代码试图通过具有 PKCE 流的身份验证代码检索 oauth2 令牌:
final FlutterAppAuth appAuth = FlutterAppAuth();
final request = AuthorizationTokenRequest(
B2C_CLIENT_ID,
B2C_REDIRECT_URI,
discoveryUrl: 'https://$B2C_DOMAIN/.well-known/openid-configuration',
scopes: ['openid', 'profile', 'offline_access'],
// promptValues: ['login']
);
final AuthorizationTokenResponse result =
await appAuth.authorizeAndExchangeCode(request);
当此代码在 iOS 中运行时,浏览器会打开,我可以看到它尝试加载登录页面,但随后立即关闭。不会抛出异常或任何东西。该代码基本上挂起,appAuth.authorizeAndExchangeCode
几乎就像它不知道浏览器已关闭一样。
我不确定是什么原因造成的。
discoveryUrl
该代码正确地确定了使用(即它首先使用 发出 http 请求)显示凭据的 url,discoveryUrl
但不确定为什么它基本上会挂起。
我在这里使用 azureb2c 进行身份验证。
编辑
好的,事实证明这是使用 azure b2c 的问题,特别是在使用不同的身份提供者进行尝试时,效果很好。
我设法找到问题并修复它现在登录页面显示在浏览器中。输入凭据后,浏览器关闭,但代码仍然挂起appAuth.authorizeAndExchangeCode(request);
并且无法继续。
还发现了存在的问题。在github上:https ://github.com/MaikuB/flutter_appauth/issues/182
解决方案
flutter_appauth
我设法按照插件的 Github 存储库上的以下答案解决了这个问题。
https://github.com/MaikuB/flutter_appauth/issues/182#issuecomment-840707729
最终,我所要做的就是在AuthorizationTokenRequest
. (看起来 Azure AD 在重定向 url 的尾部斜杠上附加,这会导致 AppAuth 中的验证失败)。
我的应用程序在 Android 和 iOS 上都可以正常使用斜线。
PS 如果这对某人不起作用,请尝试按照相应线程https://github.com/MaikuB/flutter_appauth/issues/223中的建议调整您的应用注册中的重定向 URL 。
推荐阅读
- kubernetes - 谷歌云 Kubernetes 上的 Camel FTP 客户端
- c# - 当满足某些条件时,如何防止在 textchange 事件中在 NumericUpdown 上输入文本?
- javascript - 使用 Vue 3(组合 API)替换对象而不失去反应性
- sql - JSON_VALUE 选择不同的行结果
- html - 如何在Django中将页脚添加到底部
- javascript - 如何使用 Html/Jquery 中的特定路径/驱动器号打开文件浏览器?
- elasticsearch - Elasticsearch - 查找缺少两个字段的文档
- ios - Swift 中带有 UITableView 的基于 Rx 的树结构
- php - JMS 反序列化部分 xml
- java - 切换场景时如何保持FXML文件的变化