Intent authIntent = Data4LifeClient.getInstance().getLoginIntent(MainActivity.this, null);
startActivityForResult(authIntent, requestCode);
Authentication/Authorization
This section covers the authorization project features of the SDK.
Login
The SDK automatically handles all authentication and user management tasks. The user login is managed by the Data4Life auth app to ensure the safety of the user’s credentials. When the login
functionality is invoked, the SDK opens a web view with the necessary pages or redirects in the case of a web-based app.
It follows the OAuth 2.0 for Native Apps flow and uses AppAuth Android client SDK to implement it.
Start
The login is started with the following code which launches an Activity
to present the login screen to the user for authentication.
You can pass along optional scopes
, otherwise the SDK uses the default scopes for the authorization request.
Scopes are a mechanism in the OAuth 2.0 protocol to limit an application’s access to a user account.
Finish
Once the user is logged in, canceled the authorization request, or if an exception occurred during the authentication process, the SDK sends the response to the integrator application in the onActivityResult(…)
method. The authorization results can be the following:
-
Activity.RESULT_OK
– when the login is successful. -
Activity.RESULT_CANCELED
– when the login fails, with additional payload indata
, as shown in the example.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == D4L_AUTH) {
if (resultCode == RESULT_OK) {
loggedIn();
} else if (data.getExtras() != null) {
if (data.getExtras().containsKey("error")) {
Snackbar.make(mRootCL, "Failed to log in to data4life", Snackbar.LENGTH_SHORT).show();
} else if (data.getExtras().containsKey("canceled")) {
Snackbar.make(mRootCL, "User canceled authorization request", Snackbar.LENGTH_SHORT).show();
}
}
}
}
Validate login
To check if a user is currently logged in, use the isUserLoggedIn
method.
public boolean isUserLoggedIn(ResultListener<Boolean> listener)
client.isUserLoggedIn(new ResultListener<Boolean>() {
@Override
public void onSuccess(Boolean isLoggedIn) {
// Login state is reflected in isLoggedIn
}
@Override
public void onError(D4LException exception) {
// Exception
}
});
Logout
To log out the currently authenticated user, the logout(listener)
is used where either the onSuccess
method or the onError(D4LException)
method is called.
public void logout(Callback listener)
client.logout(new Callback() {
@Override
public void onSuccess() {
// User was logged out
}
@Override
public void onError(D4LException exception) {
// Failed to log out user
}
});