2016-08-14 2 views
0

AbstractAccountAuthenticator의 사용자 정의 구현을 사용하고 있으며 설명서마다 getAuthToken을 구현했습니다. 나는이 튜토리얼을 따라왔다. http://blog.udinic.com/2013/04/24/write-your-own-android-authenticator/AbstractAccountAuthenticator getAuthToken이 호출되지 않습니다.

AbstractAccountAuthenticator의 구현에있는 getAuthToken 메소드가 언제 호출되는지는 알지 못한다. 내가 구현 한 서비스로 매니페스트에 설정하고, 로그인 페이지를 만들었으며, 계정을 추가하고, 토큰을 추가하고, AccountManager 클래스를 사용하여 액티비티에 대한 코드에서 토큰을 얻을 수 있습니다. AbstractAccountAuthenticator 코드가 호출되었습니다.

누군가 내가 왜 autheniticator를 사용하지 않는지 구현해야만하는지 이해해 주시겠습니까?

답변

0

응용 프로그램과 인증 자 사이에 조정자가 있고 Android의 AccountManager 클래스이므로 조정자가 있습니다.

인증자는 실제로 연결된 계정 유형의 "플러그인"입니다. 그것은 당신의 어플리케이션뿐만 아니라 인증 기가 처리하는 특정 계정 유형에 대한 인증을 필요로하는 다른 어플리케이션에 의해서도 사용될 수 있습니다.

앱의 매니페스트에 인증 코드를 설정하면 인증 코드가 AccountManager으로 등록됩니다. 이제 앱이 'com.google'계정 유형으로 인증하면 AccountManager은 Google의 사전 등록 된 인증자를 사용합니다. 계정 유형이 "com.yourapp.account"로 인증되면 AccountManager은 대신 인증자를 사용합니다.

앱은 인증 토큰을 묻는 메시지를 AccountManager에게 묻습니다.이 메시지가 돌아와서 인증 자에게 요청을 전달합니다.

Udini의 기사를 다시 읽으십시오. 코드 예제는이 모든 것이 어떻게 잘 맞는지 보여줍니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 그것은 제가 예상했던대로 작동하지 않는 것 같습니다. 내가 왜 브레이크 포인트를 쳤을 때 그것은 결코 맞지 않을까요? 내가 어떻게 든 AccountManagers GetAuthToken을 사용할 때 작성한 코드를 무시하고 있습니까? –

+0

'AccountManager'는 인증자를 사용해야 할시기를 결정합니다. 코드가 호출되지 않으면 'AccountManager'에 이미 유효하다고 생각되는 토큰이 있기 때문일 수 있습니다. 'getAuthToken'을 인증 기에서 실행 시키려고한다면, 먼저'AccountManager'에서'invalidateAuthToken'을 호출 해보십시오. 전체 상호 작용을 보여주는 Udini의 블로그에 불쾌한 순서도가 있습니다. –

관련 문제