2013-12-20 20 views
6

私はGitHub android app source codeを掘り出しています。GitHub android appはどのように認証を強制しますか?

アプリを初めて起動したときに、どのように表示されるのかを調べようとしています。LoginActivityが表示されます。 マニフェストthey seem to have HomeActivity as the MAINおよびLoginActivity is only launched explicitlyです。

これは、アプリが最初に開くときに常にHomeActivityが起動することを意味します。その後、コードLoginActivityLoginActivity

に行くその存在しない場合は、私がonly launched from hereあり、彼らはアカウントが存在しているかどうかを確認することを示してHomeActivityで任意のロジックが表示されません。

+0

SharedPreferences、アカウントが保存されている場合は、アクティビティを表示しないとログインします。彼らはどうやってそれをやっているのかわからないけど、それはどうやってやることができるのか。 –

答えて

6

Androidアカウントの認証と同期アダプタのメカニズムは、初めはやや複雑で、GitHubのAndroidアプリは複雑なレイヤーを追加しますが、全体の流れを説明します理解は正しい)。

あなたがまだこのテーマに精通していない場合は、最初に、Android認証システムについてthis articleをお勧めします。 GitHub Androidは、その記事で説明したのとまったく同じメカニズムを使用します。

あなたは正しく、HomeActivityが最初に起動します。その後、OrganizationLoaderを起動して組織のリストを読み込みます。そのローダーはOrganizationServiceからメソッドGitHub Java APIの一部を呼び出します。 GitHub AndroidはRoboGuiceを使用して、GitHub APIサービスのような最も一般的に使用されるクラスの注入を設定します。 OrganizationServiceがServicesModuleに作成されていることがわかります。 コンストラクタパラメータとしてGithubClientが使用され、GitHubClientのインスタンスが必要な場合はAccountClientを返すように構成されたGitHubModuleもあります。 AccountClientオーバーライドconfigureRequest()方法とこれは内部AndroidのAccountManagerからメソッドを呼び出すGitHubAccountクラスのメソッドである

String token = account.getAuthToken();

起動します。 AccountManagerはあなたが話したそのAccountAuthenticatorを使用するように設定されていますが、デバイスにアカウントがない場合はLoginActivityという意図が返されます。

希望します。

+0

素晴らしい!私はこの記事のリンクが壊れていると思う。記事のリンクを投稿してください。もう一度お世話になりました。 – birdy

+1

@birdy申し訳ありませんが、リンクを更新しました – atermenji

2

アプリはAndroidアカウントシステムを使用していますが、これは実際に既に見つかったクラスに実装されています。そのアカウントシステムは、ある時点でgetAuthToken()と呼ばれ、そこには簡単なチェックwhether the password is emptyがあり、LoginActivityのインテントをアカウント管理システムに返します。その目的を使用して、アカウント管理システムはアプリを呼び出して、最後にLoginActivityを呼び出します。

関連する問題