티스토리 뷰

원문보기
public class

android.accounts.AccountManager

extends Object

Class Overview

이 클래스는 사용자의오라인 계정의 중앙 레지스트리로 접근을 지원한다. 사용자는 credentials (사용자이름과 비밀번호)를 계정당 한번만 입력하고, 애플리케이션에 "one-click"로 올라인 리소스에 접근할 수 있는 권한을 준다.

서로다른 온라인 서비스는 계정과 인증의 처리방법을 다르게 갖는다. 그래서 account manager는 플러그인형 인증 모듈 ( pluggable authenticator modules)로 여러가지 계정 타입을 사용한다. 인증서(Authenticators -써드 파티에서 작성)는 유효한 계증 credentials 의 실제 상세내역을 다루고 계정 정보를 저장한다. 예를 들어, Google, Facebook, Microsoft Exchange 등은 자신의 고유한 인증서를 가지고 있다.

많은 서버들이 몇몇 개념(notion)의 authentication token을 지원해서, 이것은 사용자의 실제 비밀번호 없이 서버에 보내지는 request를 인증하는데 사용된다.(Auth tokens 는 보통 각각의 request 에 대해 생성되어 사용자의 credentials을 포함한다.) AccountManager 는 애플리케이션의 auth tokens를 발생하기 때문에, 애플리케이션은 비밀번호는 직접 처리할 필요가 없다. Auth tokens는 보통 재사용되며 AccountManager에 의해 캐쉬된다. 그렇지만 주기적으로 갱신해야 한다. 유효하지 않은 auth tokens 때문에 애플리케이션이 동작을 멈추면, AccountManager 그것을 재생성하는 데에 책임이 있다.

애플리케이션이 서버에 접근하는 단계

  • AccountManager 의 인스턴스를 얻는다.

    public static AccountManager get (Context context)

  • 사용가능한 계정 리스트 가져오기
    • public Account[] getAccountsByType (String type)
    • public AccountManagerFuture<Account[]> getAccountsByTypeAndFeatures (String type, String[] features, AccountManagerCallback<Account[]> callback, Handler handler)

    보통 애플리케이션은 인증이 필요한 하나의 특정 타입의 계정에 대해 관심을 가질 것이다. Account features는 특정 계정의 서브타입과 특정을 알아내는데 사용한다. account type 과 account features 모두 authenticator-specific 문자열이며 반드시 선호하는 인증서과 연계하여 애플리케이션에 의해 알려져야 한다. ??

  • 중요 : 만약 애플리케이션이 이전에 기억해두었던 계정을 사용하려면, getAccountsByType(String) 에서 리턴된 리스트 목록에 여전히 존재하는 지 확인해야 한다. 계정의 권한 토큰(auth token)을 요청하는 것은 더이상 정의되지 않은 실패로 더이상 기기에 존재하지 않는다.
  • 선택된 계정의 권한 토큰을 요청하기

    public AccountManagerFuture<Bundle> getAuthToken (Account account, String authTokenType, Bundle options, Activity activity,AccountManagerCallback<Bundle> callback, Handler handler)

  • 권한 토큰을 사용하여 요청만들기

    권한 토큰의 폼, 요청의 포맷, 프로토콜은 접근하려는 서비스에 모두 구체적으로 사용된다. 네트워크나 프로토콜 애플리케이션을 사용하는 애플리케이션이 유용하다.

  • 중요 : 요청이 권한 에러러 실패한다면, 권한 토큰은 캐쉬도ㅚ고 더 이상 서버에 지원받지 않는다. invalidateAuthToken(String, String) 을 사용하여 캐쉬에서 토큰을 제거하지 않으면 요청은 계속해서 실패할 것이다. 권한 토큰을 무효화한 후에, 즉시 위 단계에 있는 Request an auth token 로 돌아가야 한다. 만약 처리가 두번째에서 실패했다면, 이것은 "genuine" authentication failure 로 간주하고, 사용자에게 통지하거나 다른 적절한 액션을 취한다.

Some AccountManager methods may need to interact with the user to prompt for credentials, present options, or ask the user to add an account. The caller may choose whether to allow AccountManager to directly launch the necessary user interface and wait for the user, or to return an Intent which the caller may use to launch the interface, or (in some cases) to install a notification which the user can select at any time to launch the interface. To have AccountManager launch the interface directly, the caller must supply the current foreground Activity context.

Many AccountManager methods take AccountManagerCallback and Handler as parameters. These methods return immediately and run asynchronously. If a callback is provided then run(AccountManagerFuture) will be invoked on the Handler's thread when the request completes, successfully or not. The result is retrieved by calling getResult() on the AccountManagerFuture returned by the method (and also passed to the callback). This method waits for the operation to complete (if necessary) and either returns the result or throws an exception if an error occurred during the operation. To make the request synchronously, call getResult() immediately on receiving the future from the method; no callback need be supplied.

Requests which may block, including getResult(), must never be called on the application's main event thread. These operations throw IllegalStateException if they are used on the main thread.

public AccountManagerFuture getAuthToken (Account account, String authTokenType, Bundle options, Activity activity, AccountManagerCallback callback, Handler handler)

특정 계정에 대하여 명세된 형태의 권한 토큰을 가진다. 이 메소드는 포그라운드에서 실행되면서 사용자에게 직접적으로 비밀번호를 요구할 수 있는 애플리케이션을 위해 제공된다.

이전에 발행된 권한 토큰이 이 계정과 타입에 대하여 캐쉬하고 있다면 그것을 되돌려준다. 그러나 저장된 비밀번호가 이용가능하다면 서버에 새로운 권한 토큰을 요청한다.

Parameters

  • account
  • authTokenType
  • options
  • activity
  • callback
  • handler
댓글