GitHub如何使用android app强制认证?

bir*_*rdy 6 java android github android-authenticator

我正在挖掘GitHub android应用程序源代码.

我试图找出他们如何强制LoginActivity在应用程序首次启动时显示.在它们的清单中,它们似乎具有HomeActivityMAIN并且LoginActivity仅被明确地启动.

这意味着HomeActivity应用程序首次打开时始终会启动.但是,我没有看到HomeActivity中的任何逻辑表明他们检查帐户是否存在,如果它不存在则转到LoginActivity

在代码LoginActivity只从这里启动.

ate*_*nji 6

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

首先,如果您还不熟悉这个主题,我会向您推荐这篇关于Android身份验证器的文章.GitHub Android使用完全相同的机制,如该文章中所述.

你是对的,HomeActivity先推出.然后启动OrganizationLoader以加载org列表.该加载器调用方法,OrganizationService该方法是GitHub Java API的一部分.GitHub Android用于RoboGuice配置注入最常用的类,如GitHub API服务.您可以看到在ServicesModule中创建了OrganizationService .它需要GithubClient一个构造函数参数,并且还有一个GitHubModule,它被配置为在需要实例时返回AccountClientGitHubClient. AccountClient覆盖configureRequest()方法并调用

String token = account.getAuthToken();

这是GitHubAccount类的一种方法,它从内部Android调用一个方法AccountManager.并AccountManager配置为使用您已经谈过的AccountAuthenticator,LoginActivity如果设备上没有帐户,则返回intent.

希望这可以帮助 :)