android - AppAuth 登录重定向适用于 iOS,但不适用于 Android
问题描述
我正在 Flutter/Dart 中开发一个移动应用程序,我目前正在从事身份管理,特别是登录功能。我正在使用一个名为flutter_appauth的库,它是 AppAuth 库的包装器。我有一个奇怪的问题,它只发生在 Android 上,用户成功登录后,不会发生重定向。如果用户在成功登录后重新打开登录页面,他们会在 WebView 中看到一个空白屏幕(可能是因为浏览器让用户保持登录状态)。我的应用程序的身份验证流程为:App -> Login page -> Identity provider for 2FA -> App。这就是 iOS 上发生的情况,但不会从 Android 上的 ID 提供程序重定向回来。应用程序停留在已完成的身份验证页面上。
这个库通过允许您简单地定义重定向方案来处理重定向,这只是重定向 URI 的前缀部分。我在 app/build.gradle 文件中正确定义了重定向方案以及重定向 URI,如下所示:
重定向 URI:AppName:/callback
defaultConfig {
applicationId "io.example.AppName"
minSdkVersion 16
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [
'appAuthRedirectScheme': 'AppName'
]
}
我在插件的 GitHub 上发布了一个问题帖子,您可以在这里查看。该插件的作者指出,如果方案名称和重定向 URI 相同,那么我的问题出在其他地方。因为我的代码适用于 iOS,并且我为两个平台的重定向方案使用了相同的名称,所以我想我的问题不是我错误地定义了重定向方案。一切都在 iOS 模拟器上完美运行。我已经在 4 个不同的 Android 设备和 4 个不同的 API 版本上对其进行了测试,并且我在所有这些设备上都有相同的问题。我还尝试为 RedirectUriReceiverActivity 定义一个意图,但我的问题仍然存在。
我是 Flutter、Mobile Dev 和 IdM 的新手,所以我希望能得到一些指导。Chrome 和 Safari 或 iOS 和 Android 之间是否存在可能阻止此重定向发生的差异?在过去的 4 天里,我一直在互联网上寻找解决方案,但我还没有找到一个,所以我几乎没有线索。有什么建议吗?
编辑:我终于让它工作了!希望这将帮助将来解决此问题的任何人。事实证明,我所要做的就是将 appAuthRedirectScheme 的方案名称设置为完全小写的字符串。因此,即使我的重定向 URI 是 AppName:/callback,我也必须将 appAuthRedirectScheme 设置为 appname 而不是 AppName。这让它工作了。
解决方案
我在收到您的 GH 问题报告时看到了它。我也使用 AppAuth。在整合到自己的应用程序之前,我对附带的示例应用程序进行了全面测试:
https://github.com/MaikuB/flutter_appauth/tree/master/flutter_appauth/example
您是否替换了所有示例变量等并确认所有这些都适用于 iOS 和 Android?
可以回归基础并使用示例应用程序,如果您仍然有问题,您可以添加到您提出的问题并将示例与您自己的应用程序进行比较。
在生活中,这通常是一个错字或权限:-)
谢谢。
推荐阅读
- r - 如何在 Ggplot2 标签中使用“符号 = 数字”和“字符 = 数字”
- java - 为什么 java 编译器需要一个看似无用的包装函数来类型检查泛型边界?
- r - 在R中绘制小提琴图
- reactjs - Redux-Toolkit 查询授权案例
- javascript - 输入装饰器在 Angular 中不起作用(属性“名称”没有初始值设定项,并且未在构造函数中明确分配。)
- angularjs - 如何在具有溢出属性的 div 中显示完整的工具提示(未裁剪)?
- c# - 从文件中删除文本
- android - com.fyber:fyber-sdk:8.22.1 没有缓存版本可用于离线模式
- amazon-web-services - 尝试使用 codepipeline 将 spring boot + mysql 应用程序部署到 AWS 时出错
- npm - NX 错误 - Nx 无法安装依赖项