db 동기화를 처리하기 위해 SyncAdapter
을 사용하여 새로운 Android 앱을 만들고 있습니다. 나는 모든 것을 갖추고 있으며 앱이 잘 작동하고 있지만 두 번 로그인 한 것으로 나타났습니다.SyncAdapters를 사용할 때 두 번 로그인하십시오.
AuthenticatorActivity
클래스 (확장 AccountAuthenticatorActivity
)가 사용자와 암호의 유효성을 검사하면 첫 번째 로그인이 수행됩니다. 사용자와 암호가 올 경우
AuthenticatorActivity
는 다음을 수행합니다
account
는 그것이intent.putExtra(AccountManager.KEY_AUTHTOKEN, authToken);
이를 사용하여 저장됩니다 mAccountManager.addAccountExplicitly()
authToken
를 사용하여 생성 존재하지 않은 경우 기본적으로 Android 샘플에서 복사/붙여 넣기되었으므로 괜찮습니다. 문제는 SyncAdapter
발사하고 AbstractAccountAuthenticator
을 연장 Authenticator
클래스 내에
authtoken = mAccountManager.blockingGetAuthToken(account,
AuthenticatorActivity.PARAM_AUTHTOKEN_TYPE, true);
getAuthToken()
방법을 사용하는 경우라는 점이다. 그리고이 방법 안에서 다시 로그인 끝점을 치고 있습니다.
그 이후부터 authToken
이 만료 될 때까지 로그인 엔드 포인트가 다시 히트되지 않습니다.
이것은 나를 괴롭히는 것이 아니지만 로그인을 두 번하지 않도록하는 방법이 있는지 알고 싶습니다. 당신이 본 것처럼
번들에 토큰을 다시 전달하는 대신'AccountManager.setAuthToken()'을 사용하면 어떨까요? – alexanderblom
@alexanderblom : 나는 그것을 시도했다. 차이 없음. – Macarse
두 건의 로그인 뒤의 이유는 인증 토큰이 최신인지 확인하는 것이었지만 소스를 찾을 수 없었습니다. 나는 지난해 Google I/O에서 작년에 처음 출시되었을 때 C2DM 예제를 따라하려고했을 때 어딘가에서 읽은 것을 기억합니다 ... – Yenchi