java - GitHub android app如何强制认证?

标签 java android github android-authenticator

我正在挖掘 GitHub android app source code .

我正在尝试了解他们如何强制 LoginActivity 在应用程序首次启动时显示。 在他们的 list 中 they seem to have HomeActivity as the MAINLoginActivity is only launched explicitly .

这意味着 HomeActivity 总是在应用首次打开时启动。但是,我在 HomeActivity 中看不到任何逻辑这表明他们检查帐户是否存在,如果不存在则转到 LoginActivity

在代码中LoginActivityonly launched from here .

最佳答案

好的,整个 Android 帐户身份验证和同步适配器机制乍一看可能相当复杂,GitHub Android 应用程序在那里增加了另一层复杂性,但我会尝试向您解释整个流程(我希望我的理解是正确的)。

一开始,我会推荐你​​this article关于 Android Authenticator 如果您还不熟悉这个主题。 GitHub Android 使用与那篇文章中描述的完全相同的机制。

没错,HomeActivity 首先启动。然后它启动 OrganizationLoader加载组织列表。该加载器从 OrganizationService 调用方法,它是 GitHub Java API 的一部分. GitHub Android 使用 RoboGuice 配置注入(inject)最常用的类,如 GitHub API 服务。可以看到ServicesModule中创建了OrganizationService . 它以 GithubClient 作为构造函数参数,还有一个 GitHubModule配置为返回 AccountClient当需要 GitHubClient 实例时。 AccountClient 覆盖 configureRequest() 方法并调用

String token = account.getAuthToken();

这是GitHubAccount的一个方法类,它从内部 Android 的 AccountManager 调用一个方法。 AccountManager 配置为使用 AccountAuthenticator你已经谈到了,如果设备上没有帐户,它会返回 LoginActivity Intent 。

希望这有帮助:)

关于java - GitHub android app如何强制认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707154/

相关文章:

docker - github 工作流程 : "ECONNREFUSED 127.0.0.1:***" error when connecting to docker container

android - 无法在 Mac 上的 Android 模拟器上捕获屏幕截图

image - Markdown 中损坏的图像链接

Github Apps 用户识别

java - 为什么在Optional.map(byte[]::clone) 上出现编译错误?

java - "Unfortunately app has stopped"错误?

android - 更新 Android Studio-

java - css 样式在 javax 邮件 api 中不起作用

java - android studio Sqlite 数据库 java.lang.IllegalStateException : getDatabase called recursively

java - 尝试将控制台输出保存在文本文件中时出现 NullPointerException