Android SDK에서 AccountManager를 보았고 계정 정보를 저장하는 데 사용됩니다. 따라서 나는 그것이 의도 한 것에 대한 일반적인 토론을 찾을 수 없습니다. 계정 관리자의 의도와 구매에 대한 유용한 토론에 대해 아는 사람이 있습니까? 이것이 어떤 유형의 계정에 적합한 지에 대한 의견이 있으십니까? 일반적인 웹 서비스에 대한 사용자 계정 정보를 넣을 위치입니까?
Android SDK에서 AccountManager를 보았고 계정 정보를 저장하는 데 사용됩니다. 따라서 나는 그것이 의도 한 것에 대한 일반적인 토론을 찾을 수 없습니다. 계정 관리자의 의도와 구매에 대한 유용한 토론에 대해 아는 사람이 있습니까? 이것이 어떤 유형의 계정에 적합한 지에 대한 의견이 있으십니까? 일반적인 웹 서비스에 대한 사용자 계정 정보를 넣을 위치입니까?
답변:
이 질문은 조금 낡았지만 여전히 좋은 생각입니다.
AccountManager
, SyncAdapter
와 ContentProvider
함께 이동합니다.
하지만 당신은 할 수 있습니다:
ContentProvider
다른 사람없이 사용하십시오 .AccountManager
다른 사람없이 (하지만 당신은 사용할 수 없습니다 AccountManager
없이를SyncAdapter
안드로이드 2.2 전에 / 프로 요 API 8)와 AccountManager
/ SyncAdapter
/ ContentProvider
:
AccountManager
사용자에게 자격 증명을 정의하기위한 중앙 지점 (설정> 계정)을 제공합니다.SyncAdapter
합니다. 배터리를 최적화하는 데 좋습니다 (예 : 네트워크가 다운 된 경우 동기화가 수행되지 않음)ContentProvider
응용 프로그램간에 데이터를 공유하는 편리한 방법입니다. 참고 : Android 에는 다른 프로세스 간 통신 방법이 있습니다.ContentProvider
일정은 백그라운드에서 데이터베이스 액세스 스레드AsyncQueryHanlder
를 조회하는 데 도움이 ContentProvider
명시 적으로 스레드를 처리 할 필요가없는 동안 응용 프로그램이 아닙니다 응답 (ANR) 오류를 방지 백그라운드 스레드에서.ContentProvider
관계로 ContentResolver
의 관찰자 : 콘텐츠가 변경 될 때 통지를보기 쉽다이 수단결론 : 프레임 워크 AccountManager
/ SyncAdapter
/ ContentProvider
는 웹 리소스의 데이터를 동기화하려는 경우 도움이됩니다. API 7에서는 가짜 / 멍청한 구현 이 필요합니다.
AsyncTaskLoader
마지막으로, 당신은을 사용하는 경우 SyncAdapter
, 심각하게 고려 중포 기지 클라우드 메시징 신선한 업데이트 및 최적화 된 배터리 사용을 위해 "푸시 알림"일명 (이전에 Google 클라우드 메시징).
AccountManager 클래스는 전화 계정과 통합되어 있습니다. 따라서 모든 가이드를 따르고 올바르게 작동하면 "설정-> 계정 및 동기화"메뉴에 계정이 표시됩니다. 거기에서 사용자 정의하거나 삭제할 수도 있습니다. 또한 accountManager에는 계정에 대한 인증 티켓 캐시가 있습니다. 계정을 동기화하지 않으려는 경우에도 사용할 수 있습니다 (내가 아는 한).
해당 메뉴에 계정을 표시하지 않으려면 AccountManager를 사용하지 말고 계정 데이터를 다른 곳에 저장하십시오 (공유 환경 설정에있을 수 있음) http://developer.android.com/guide/topics/data/data -storage.html
에서 http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ :
퍼즐의 첫 번째 조각을 계정 인증 자라고하며, "계정 및 동기화"설정에서 사용자 계정이 표시되는 방법을 정의합니다. Account Authenticator를 구현하려면 3 가지가 필요합니다. onBind 메소드에서 AbstractAccountAuthenticator의 서브 클래스를 리턴하는 서비스, 사용자에게 신임 정보를 입력하도록하는 활동 및 사용자에게 표시 될 때 계정이 어떻게 보이는지 설명하는 xml 파일. 또한 android.permission.AUTHENTICATE_ACCOUNTS 권한을 AndroidManifest.xml에 추가해야합니다.
는 AccountManager
다음과 같은 이유로 좋은 :
Accounts
그러나이 멋진 외관을 요구하지 않고도 앱에서 쉽게 관리 할 수 있기 때문에을 사용하는 주된 이유는 아닙니다 Accounts
.Accounts
인증이 백그라운드에서 수행되고 사용자에게 특정 조건에서만 비밀번호를 요청하기 때문에 사용자가 권한 부여 된 기능을 요청할 때마다 사용자 이름 및 비밀번호로 기존 권한을 제거하는 것입니다. 나는 나중에 그것을 얻을 것이다.Accounts
안드로이드에서이 기능을 사용하면 자신의 계정 유형을 정의 할 필요가 없습니다. 인증을 위해 Google 계정을 사용하여 앱을 방문했을 수 있습니다. 그러면 새 계정을 만들고 사용자의 자격 증명을 기억해야하는 번거 로움이 줄어 듭니다.Accounts
설정 → 계정을 통해 독립적으로 추가 할 수 있습니다Accounts
. 예를 들어, 클라이언트는 반복적 인 로그인없이 Android 기기와 PC에서 동시에 보호 된 자료에 액세스 할 수 있습니다.Accounts
Android에서이 기능 을 사용하는 중요한 이유 Accounts
는 클라이언트 (사용자)의 자격 증명을 손상시키지 않고 인증 자 및 리소스 소유자 에 의존하는 비즈니스에 관련된 두 당사자를 분리하는 것 입니다. 용어는 다소 모호해 보일 수 있지만 다음 단락을 읽을 때까지 포기하지 마십시오… 😉비디오 스트리밍 앱의 예를 통해 후자를 자세히 설명하겠습니다. 회사 A는 특정 회원에게 프리미엄 스트리밍 서비스를 제공하기 위해 회사 B와 계약 한 비디오 스트리밍 비즈니스의 소유자입니다. 회사 B는 사용자를 인식하기 위해 사용자 이름과 비밀번호 방법을 사용합니다. 회사 A가 B의 프리미엄 회원을 인식 할 수있는 한 가지 방법은 B에서 해당 회원의 목록을 가져오고 유사한 사용자 이름 / 암호 일치 메커니즘을 이용하는 것입니다. 이런 식으로 인증 자와 리소스 소유자는 동일합니다 (회사 A). 두 번째 비밀번호를 기억해야하는 사용자의 의무 이외에, A의 서비스를 사용하기 위해 회사 B의 프로파일과 동일한 비밀번호를 설정했을 가능성이 높습니다. 이는 바람직하지 않습니다.
위의 단점을 해결하기 위해 OAuth가 도입되었습니다. 승인의 공개 표준 인 위의 예에서 OAuth는 적격 사용자 (타사)에게 액세스 토큰이라는 일부 토큰을 발행하고 회사 A (자원 소유자)에게 토큰. 따라서 토큰이 없다는 것은 자격이 없음을 의미합니다.
나는 이것에 대해 더 자세히 설명하고 여기AccountManager
내 웹 사이트 에서 더 자세히 설명 했다.