【发布时间】:2021-08-02 07:55:17
【问题描述】:
我不是新手,但我主要是一名 iOS 开发人员,多年来没有在 Android 上工作过。不幸的是,我现在需要在现有的用 Kotlin 编写的 Android 应用中实现 OAuth 登录。
我了解 OAuth 的基础知识,并且最近在 iOS 应用中实现了它。
我决定将打开 OAuth 登录页面的代码直接放入 Android 应用程序主要活动的 onCreate() 方法中。这有效,因为当应用程序运行时,网页打开。另外,我设置了一个意图过滤器来响应来自 OAuth 网站的重定向(它也是一个附加到主要活动的意图)。
当我运行应用程序时,我可以登录,再次调用onCreate()方法,我可以从intent.data中得到我需要的结果。但是,当我尝试导航到代表应用程序主屏幕的片段时,应用程序随后崩溃。日志中的错误是“java.lang.IllegalStateException:FragmentManager 已被销毁”。
我知道主屏幕片段可以正常工作,如果我不进行 OAuth 直接打开它就会出现。
我怀疑我通过让重定向转到主要活动来做一些非法的事情,而且,当登录完成时,我需要一段数据(我生成的“codeVerifier”字符串)。我可以让重定向打开一个新活动,但我不知道如何将该字符串传达给它——我尝试使用静态变量,但 Kotlin 显然不支持静态。
构建这个的最佳方式是什么?
谢谢。
【问题讨论】:
-
请让问题更简洁。
-
能否请您显示重定向到主要活动的代码。 onCreate 和清单文件代码