Skip to content

Android.accounts.AccountManager

Service process

보통 서버에 접속하는 어플리케이션들은 이러한 절차를 통하게 된다.

  1. get(Context)를 사용해서 AccountManager의 인스턴스를 얻는다.
  2. getAccountByType(String)이나 getAccountByTypeAndFeatures(String, String[], AccountManagerCallback, Handler)를 사용해서 이용가능한 계정을 나열한다. 보통 어플리케이션들은 하나의 특정 타입(타입은 Authenticator를 식별한다)을 가진 계정에 관심을 갖게 된다. 계정 Feature들은 특정 계정 서브타입과 Capabilities를 식별하기 위해 사용된다. Account Type과 Feature 두 가지 모두는 Authenticator용의 문자열들이다. 그리고 그것의 Prefered Authenticator들과 일치하는 어플리케이션에 의해 알려져야 한다.
  3. 가능하면 사용자에게 선호하는 계정에 대한 요청을 통해 이용가능한 계정 중에 하나 이상을 선택한다. 적합한 계정을 이용할 수 없다면 addAccount(String, String, String[], Bundle, Activity.AccountManagerCallback, Handler)는 사용자에게 적당한 타입의 계정을 생성하도록 하기 위해 호출된다.
  4. 어플리케이션이 전에 기억되어진 계정 선택을 사용한다면 계정이 아직도 getAccountByType(String)이 리턴한 계정 리스트에 있다는 것이 보장되어야 한다. 디바이스 상에서 계정을 위한 Auth token을 더이상 요청하지 않으면 정의되지 않은 실패가 발생한다.
  5. getAuthToken(Account, String, Bundle, Activity, AccountManagerCallback, Handler)메소드나 관련 Helper들 중 하나를 사용 해서 선택된 계정들을 위한 Auth token을 요청한다.
  6. Auth token을 사용하는 요청을 만든다. Auth token의 폼, 요청의 포맷, 그리고 사용된 프로토콜은 모두 개발자가 접근 중인 서비스에 특화된다. 어플리케이션은 유용하다면 어떠한 네트워크와 프로토콜 라이브러리도 사용할 수 있다.
  7. 요청이 Authentication 에러를 발생하고 실패한다면 캐쉬된 Auth token이 오래되었거나 더 이상 서버에 의해 인정되지 않음을 의미한다. 어플리케이션은 캐쉬로부터 Token을 제거하기 위해 invalidateAuthToken(String, String)을 호출해야 한다. 그렇지 않으면 요청들은 계속 실패할 것이다. Auth token을 무효화한 후에 즉시 상단의 "Auth token을 요청한다" 단계로 돌아간다. 만약 두 번째 실패하면 그것은 진짜 Authentication 실패로 취급되고 사용자는 노티를 받게 되거나 다른 적절한 액션들이 취해진다.

Favorite site