Android
계정 및 AccountManager
수색…
사용자 지정 계정 이해 / 인증
다음 예는 핵심 개념과 기본 골격 설정의 높은 수준의 적용 범위입니다.
- 사용자로부터 자격 증명을 수집합니다 (일반적으로 생성 한 로그인 화면에서).
- 서버로 자격 증명을 인증합니다 (사용자 정의 인증 저장).
- 장치에 자격 증명을 저장합니다.
AbstractAccountAuthenticator 확장 (주로 인증 검색 및 다시 인증에 사용됨)
public class AccountAuthenticator extends AbstractAccountAuthenticator {
@Override
public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
String authTokenType, String[] requiredFeatures, Bundle options) {
//intent to start the login activity
}
@Override
public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account, Bundle options) {
}
@Override
public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
}
@Override
public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType,
Bundle options) throws NetworkErrorException {
//retrieve authentication tokens from account manager storage or custom storage or re-authenticate old tokens and return new ones
}
@Override
public String getAuthTokenLabel(String authTokenType) {
}
@Override
public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account, String[] features)
throws NetworkErrorException {
//check whether the account supports certain features
}
@Override
public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType,
Bundle options) {
//when the user's session has expired or requires their previously available credentials to be updated, here is the function to do it.
}
}
서비스 생성 (계정 관리자 프레임 워크는 서비스 인터페이스를 통해 확장 된 AbstractAccountAuthenticator에 연결됨)
public class AuthenticatorService extends Service {
private AccountAuthenticator authenticator;
@Override
public void onCreate(){
authenticator = new AccountAuthenticator(this);
}
@Override
public IBinder onBind(Intent intent) {
return authenticator.getIBinder();
}
}
인증 프로그램 XML 구성 (계정 관리자 프레임 워크가 필요합니다. Android의 설정 -> 계정에 표시됩니다)
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="rename.with.your.applicationid"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:smallIcon="@drawable/app_icon" />
AndroidManifest.xml의 변경 사항 (위의 모든 개념을 결합하여 AccountManager를 통해 프로그래밍 방식으로 사용할 수 있도록 함)
<application
...>
<service
android:name=".authenticator.AccountAuthenticatorService"
android:exported="false"
android:process=":authentication">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator"/>
</service>
</application>
다음 예제에서는이 설정을 사용하는 방법을 설명합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow