ForgeRock Developer Experience

Set up social login in Android apps

This page shows how to use the Android SDK with authentication journeys that provide social login and registration.

The first callback your app encounters is the SelectIdPCallback, which lets the user choose their IdP. You use the getProviders() method to display the available providers, and setValue when the user makes a choice:

List<SelectIdPCallback.IdPValue> providers = callback.getProviders();
callback.setValue(chosenProvider);

The next callback is the IdPCallback. You call the signIn() method on the IdPCallback class:

callback.signIn(null, new FRListener<Void>() {
  @Override
  public void onSuccess(Void result) {
    //proceed to next node
    node.next();
  }

  @Override
  public void onException(Exception e) {
    //handle error
  }
});

This method directs the user to authenticate with the IdP. When the user authenticates with that provider, the result is automatically added to the IdPCallback with the following methods:

idPCallback.setTokenType(String tokenType)
idPCallback.setToken(String token)

In order to override the automatic provider detection, and identify the returned provider manually, you must check the IdPClient provider value in the IdPCallback returned:

IdPHandler idPHandler = null;
  switch (callback.getProvider()) {
    case "facebook-android":
      idPHandler = new FacebookSignInHandler();
      break;
    case "google-android":
      idPHandler = new GoogleSignInHandler();
      break;
    case "apple-android":
      idPHandler = new AppleSignInHandler();
      break;
    default:
      //error
  }

//  If the handler has been found and initialised, call the following to perform login
callback.signIn(idPHandler, new FRListener<Void>() {
  ...
  //  Social Login flow is completed
}

SDK configuration

Google

For Google Sign-In, add the following dependency to the build.gradle file:

implementation 'com.google.android.gms:play-services-auth:20.5.0'

Facebook

For Facebook Login:

  1. Add the Facebook dependency to the build.gradle file:

    implementation 'com.facebook.android:facebook-login:16.0.0'
  2. Add the following to the AndroidManifest.xml file:

    <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>
    
    <meta-data android:name="com.facebook.sdk.ClientToken"
        android:value="@string/facebook_client_token"/>
    
    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges=
        "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
  3. Add the following attributes to the string.xml file:

    <string name="facebook_app_id">Your Facebook App ID</string>
    <string name="fb_login_protocol_scheme">"fb" + Your Facebook App ID</string>
    <string name="facebook_client_token">Your Facebook client token</string>

    To find the values for facebook_app_id and fb_login_protocol_scheme, go to the Facebook Developer Console, and copy the App ID value:

    Obtain the App ID from the Facebook developer console

    Prefix your App ID value with fb to get the fb_login_protocol_scheme value.

    For example, if your App ID is 123456781234567, your fb_login_protocol_scheme is fb123456781234567.

    To find the value for facebook_client_token, go to the Facebook Developer Console, select your app, then navigate to Settings > Advanced > Security. Copy the Client token value:

    Obtain the client tokenfrom the Facebook developer console

    For example:

    <string name="facebook_app_id">123456781234567</string>
    <string name="fb_login_protocol_scheme">fb123456781234567</string>
    <string name="facebook_client_token">ab12cd34ef56ab78ab12cd34ef56ab78</string>

Apple

For Sign in with Apple:

  1. Add the AppAuth dependency to the build.gradle file:

    implementation 'net.openid:appauth:0.7.1'
  2. Add the following to the AndroidManifest.xml file:

    <activity
        android:name="net.openid.appauth.RedirectUriReceiverActivity"
        tools:node="replace"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/apple_scheme" />
        </intent-filter>
    </activity>
  3. Add the following attribute to the string.xml file:

    <string name="apple_scheme">Your Redirect after form post URL Scheme</string>

    To find the value of apple_sheme, go to Services > Social Identity Provider Service > Secondary Configurations > Apple:

    Apple redirect after form post URL scheme

    In this example, the scheme would be org.forgerock.demo.