Próbuję uzyskać informacje o Androidzie AccountManager i OAuth. Nie chcę pozwolić telefonowi na dostęp do hasła. (Tak właśnie Google sugeruje: "Be Smart About Security!") Więc wypisuję przykładową aplikację Google SampleSyncAdapter i zaczynam czytać kod. Wtedy widzę to się stało w AuthenticatorActivity:SampleSyncAdapter przechowywanie hasła zwykły tekst?
private AccountManager mAccountManager;
private String mPassword;
/**
* ... Sets the
* AccountAuthenticatorResult which is sent back to the caller. We store the
* authToken that's returned from the server as the 'password' for this
* account - so we're never storing the user's actual password locally.
*
* @param result the confirmCredentials result.
*/
public void handleLogin(View view) {
....
mPassword = mPasswordEdit.getText().toString();
....
Log.d(TAG, "mPassword set to Account:" + mAccountManager.getPassword(account));
}
private void finishLogin(String authToken) {
....
mAccountManager.addAccountExplicitly(account, mPassword, null);
....
}
wiadomość Ten dziennik jest "mPassword ustawiony na konto: Test". Jest to w pewnym sensie zrozumiałe, kiedy przeczytać resztę z tego powodu
protected String doInBackground(Void... params) {
....
return NetworkUtilities.authenticate(mUsername, mPassword);
....
}
jeśli hasło było token to nie będzie działać.
Również oczekiwałbym, że reszta kodu zadziała inaczej w Authenticator na getAuthToken() Zakładam, że jestem całkowicie w błędzie co do czegoś, ale chcę tylko użyć AccountManagera do przechowywania wyniku OAuth "Dance", tak aby mogę używać tego konta do uwierzytelniania mojej usługi RESTful JSON.
Czy ktoś może oświetlić to zdjęcie?
Co się stanie, jeśli token zostanie unieważniony po upływie określonego czasu? Myślę, że po prostu musisz ponownie poprosić użytkownika o podanie hasła w tym przypadku. Jednak wiele serwisów (np. Facebook) nigdy nie prosi mnie o hasło, więc albo 1) wygenerowany token nigdy nie wygasa, co czyni go zasadniczo tak dobrym jak hasło pod względem bezpieczeństwa, albo 2) przechowują moje hasło (zwykły tekst lub zaszyfrowane). –