Dependancies build.gradle(Module: app)
implementation ('org.jboss.aerogear:aerogear-android-authz:2.0.0') {
exclude module : 'compatibility-v4'
transitive = true
}
Android Manifest.xml file
<uses-permission android:name="android.permission.INTERNET"/>
<service android:name="org.jboss.aerogear.android.authorization.oauth2.OAuth2AuthzService"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="oauth2callback"
android:scheme="oauth" />
</intent-filter>
</activity>
MainActivity.java ( onCreate )
try {
//Change -> testapp ( realm name ) and base URL
AuthorizationManager.config("KeyCloakAuthz", OAuth2AuthorizationConfiguration.class)
.setBaseURL(new URL("https://your-app-name.herokuapp.com/auth"))
.setClientId("account")
.setAuthzEndpoint("/realms/testapp/protocol/openid-connect/auth")
.setAccessTokenEndpoint("/realms/testapp/protocol/openid-connect/token")
.setRefreshEndpoint("/realms/testapp/protocol/openid-connect/token")
.setAccountId("account")
.setRedirectURL("oauth://oauth2callback")
.asModule();
PipeManager.config("kc-upload", RestfulPipeConfiguration.class)
.module(AuthorizationManager.getModule("KeyCloakAuthz"))
.requestBuilder(new MultipartRequestBuilder());
authzModule = AuthorizationManager.getModule("KeyCloakAuthz");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Let's create a button in MainActivity.xml and bind login method to click event.
public void login(View view) {
authzModule.requestAccess(this, new Callback<String>() {
@Override
public void onSuccess(String s) {
//callback.onSuccess(s);
Log.d(TAG, "Bearer Token :" + s);
}
@Override
public void onFailure(Exception e) {
if (!e.getMessage().matches(OAuthWebViewDialog.OAuthReceiver.DISMISS_ERROR)) {
authzModule.deleteAccount();
}
}
});
}