Asynchrone Kontoauthentifizierung mit Volley
jeder
Ich implementiere eine Kontoauthentifizierung mit AbstractAccountAuthenticator und muss eine asynchrone Methode in der Funktion getAuthToken aufrufen, um einen Benutzer zu authentifizieren. Mein Code ist wie folgt:
public class AccountAuthenticator extends AbstractAccountAuthenticator {
...
@Override
public Bundle getAuthToken( final AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options )
throws NetworkErrorException
{
final AccountManager accountManager = AccountManager.get(context);
String authToken = accountManager.peekAuthToken( account, authTokenType );
// !!!!
if( TextUtils.isEmpty(authToken) ) {
<<call asynchronous method to acquire token>>
return null;
}
// !!!!
final Bundle result = new Bundle();
result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
result.putString(AccountManager.KEY_AUTHTOKEN, authToken);
return result;
}
...
}
Nach Googles Dokumentation für die Methode 'getAuthToken' wird ein Bundle-Ergebnis zurückgegeben odernull wenn das Ergebnis über die Antwort @ zurückgegeben werden so. Das Ergebnis enthält entweder:
• AccountManager.KEY_INTENT
, ode
• AccountManager.KEY_ACCOUNT_NAME
, AccountManager.KEY_ACCOUNT_TYPE
, undAccountManager.KEY_AUTHTOKEN
, ode
• AccountManager.KEY_ERROR_CODE
undAccountManager.KEY_ERROR_MESSAGE
um einen Fehler anzuzeigen
Und ich muss null zurückgeben, weil die Authentifizierungsmethode asynchron ist, aber wie kann ich das Bundle gemäß der Dokumentation über den Parameter 'response' zurückgeben?
Vielen Dank für alles, und sorry mein Englisch.