我正在用Flutter/Dart开发一个移动应用程序,目前我正在研究身份管理,特别是登录功能。我正在使用一个名为flutter_appauth的库,它是AppAuth库的包装器。我有一个奇怪的问题,只有在Android上才会发生,在用户成功登录后,不会发生重定向。如果用户在成功登录后重新打开登录页面,则在WebView中会出现一个空白屏幕(可能是因为浏览器使用户保持登录状态)。我的应用程序的身份验证流程是:应用程序->登录页面2FA ->应用程序的->身份提供者。这是在iOS上发生的事情,但不会从安卓上的ID提供程序重定向回来。应用程序停留在已完成的身份验证页面上。我使用的身份提供者是PingID。
这个库通过允许您简单地定义重定向方案来处理重定向,重定向方案只是重定向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上发表了一篇文章,你可以看看here。该插件的作者指出,如果方案名称和重定向URI是相同的,那么我的问题就出在其他地方。因为我的代码在iOS上工作,并且我对两个平台的重定向方案使用了相同的名称,所以我想我的问题不是我错误地定义了重定向方案。一切都可以在iOS模拟器上完美地工作。我已经在4个不同的Android设备和4个不同的API版本上测试了它,我在所有这些设备上都有相同的问题。我也尝试过为RedirectUriReceiverActivity定义一个意图,但我的问题仍然存在。
我是Flutter,Mobile Dev和IdM的新手,所以我希望能得到一些指导。Chrome和Safari之间,或者iOS和安卓之间有什么不同,可能会阻止这种重定向的发生吗?在过去的4天里,我一直在互联网上寻找解决方案,但我还没有找到一个,所以我几乎没有任何线索了。有什么建议吗?
编辑:我终于让它工作了!希望这能帮助将来解决这个问题的任何人。事实证明,我所要做的就是将appAuthRedirectScheme的方案名称设置为完全小写的字符串。因此,即使我的重定向URI是AppName:/callback,我也必须将appAuthRedirectScheme设置为AppName而不是appname。这让它工作起来了。
发布于 2020-06-24 04:36:21
我看到你的生长激素问题报告了。我也使用AppAuth。在我加入自己的应用程序之前,我完全测试了它附带的示例应用程序:
https://github.com/MaikuB/flutter_appauth/tree/master/flutter_appauth/example
您是否替换了所有示例变量等,并确认所有这些都可以在iOS和安卓上运行?
可以回到基础并使用示例应用程序,如果您仍然有问题,您可以添加到您提出的问题,并将示例与您自己的应用程序进行比较。
在生活中,它通常是一个打字错误或权限:-)
谢谢。
发布于 2020-09-13 15:58:09
经过几个小时的故障排除,这才解决了我在安卓上的问题,而不是iOS。很高兴知道build.gradle是区分大小写的。学到的教训。
manifestPlaceholders = [
'appAuthRedirectScheme': 'appname'
]
https://stackoverflow.com/questions/62543099
复制相似问题