Skip to content

Instantly share code, notes, and snippets.

@gsandaru
Created January 4, 2020 18:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gsandaru/888b152fb802113ff248a2e3df0f1151 to your computer and use it in GitHub Desktop.
Save gsandaru/888b152fb802113ff248a2e3df0f1151 to your computer and use it in GitHub Desktop.
AndroidClientSetup

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();  
		      }  
            }  
        });  
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment