Zoeken…


Inzicht in aangepaste accounts / authenticatie

Het volgende voorbeeld is een dekking op hoog niveau van de belangrijkste concepten en basis skeletopstelling: -

  1. Verzamelt inloggegevens van de gebruiker (meestal vanuit een inlogscherm dat u hebt gemaakt)
  2. Verifieert de referenties met de server (slaat aangepaste verificatie op)
  3. Slaat de inloggegevens op het apparaat op

Een AbstractAccountAuthenticator uitbreiden (voornamelijk gebruikt om authenticatie op te halen en opnieuw te authenticeren)

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.
  }
}

Maak een service (Account Manager framework maakt verbinding met de uitgebreide AbstractAccountAuthenticator via de service-interface)

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();
    }
}


Authenticator XML-configuratie (het accountmanager-framework vereist. Dit zie je in Instellingen -> Accounts in 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" />

Wijzigingen in AndroidManifest.xml (breng alle bovenstaande concepten samen om het programmatisch bruikbaar te maken via de 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>

Het volgende voorbeeld zal bevatten hoe u van deze opstelling gebruik kunt maken.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow