auth0/Lock-Facebook.Android

Name: Lock-Facebook.Android

Owner: Auth0

Description: Lock for Android add-on to use Facebook Android SDK

Created: 2015-05-27 14:17:15.0

Updated: 2018-02-08 07:13:21.0

Pushed: 2017-08-09 13:52:07.0

Homepage: https://auth0.com/lock

Size: 196

Language: Java

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Lock-Facebook

CircleCI License Maven Central Download

Auth0 is an authentication broker that supports social identity providers as well as enterprise identity providers such as Active Directory, LDAP, Google Apps and Salesforce.

Lock-Facebook helps you integrate native Login with Facebook Android SDK and Lock

Deprecation notice

This package relies on a token endpoint that is now considered deprecated. If your Auth0 client was created after Jun 8th 2017 you won't be able to use this package. This repository is left for reference purposes.

We recommend using browser-based flows to authenticate users. You can do that using the auth0.android package's WebAuthProvider class, as explained in this document.

Requirements

Android 4.0 or later & Facebook Android SDK 4.+

Install

The Lock-Facebook is available through Maven Central and JCenter. To install it, simply add the following line to your build.gradle:

ile 'com.auth0.android:lock-facebook:3.1.0'
Facebook Developers Console
  1. Go to the Facebook Developers Console and add a new App: Choose “Android” and give it a valid name. Click “Create new Facebook App ID”.
  2. Follow the Android Quickstart provided by Facebook. When you're done, you'll end up in your Application's screen. Take note of the APP ID and APP SECRET values.
  3. On the left side you have the navigation drawer. Click Settings and then Basic. Turn ON the Single Sign On switch and click the Save button.
  4. Now click Settings and then Advanced. Turn ON the Native or desktop app? switch.
Auth0 Dashboard
  1. Go to the Auth0 Dashboard and click Social Connections. Click Facebook and a dialog will prompt.
  2. Complete the “App ID” field with the APP ID value obtained in the step 2 of the Facebook Developers Console section above.
  3. Complete the “App Secret” field with the APP SECRET value obtained in the step 2 of the Facebook Developers Console section above. Click the Save button.
  4. Go to the Auth0 Dashboard and click Clients. If you haven't created yet one, do that first and get into your client configuration page. At the bottom of the page, click the “Show Advanced Settings” link and go to the “Mobile Settings” tab.
  5. In the Android section, complete the Package Name with your application's package name. Finally, complete the Key Hashes field with the SHA-256 of the certificate you're using to sign your application.
Android Application
  1. In your android application, create a new String resource in the res/strings.xml file. Name it facebook_app_id and set as value the APP ID obtained in the step 2 of the Facebook Developers Console setup section above.
  2. Add the FacebookActivity and facebook_app_id MetaData to the AndroidManifest.xml file, inside the Application tag.
ivity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"/>
a-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
  1. Add the Internet Android permission to your AndroidManifest.xml file.
s-permission android:name="android.permission.INTERNET" />
  1. Create a new instance of the FacebookAuthProvider.
ic class MainActivity extends AppCompatActivity {
ivate FacebookAuthProvider provider;
 ...

verride
otected void onCreate(Bundle savedInstanceState) {
Auth0 auth0 = new Auth0(getString(R.string.com_auth0_client_id), getString(R.string.com_auth0_domain));
final AuthenticationAPIClient client = new AuthenticationAPIClient(auth0);
provider = new FacebookAuthProvider(client);


 ...

Depending on your use case, you'll need to add a few more lines of code to capture the authorization result. Follow the guides below:

If you need further help with the setup, please check Facebook's Getting Started Guide.

Authenticate with Lock

This library includes an implementation of the AuthHandler interface for you to use it directly with Lock. Create a new instance of the FacebookAuthHandler class passing a valid FacebookAuthProvider. Don't forget to customize the permissions if you need to.

0 auth0 = new Auth0("auth0-client-id", "auth0-domain");

bookAuthProvider provider = new FacebookAuthProvider(new AuthenticationAPIClient(auth0));
ider.setPermissions(Arrays.asList("public_profile", "user_photos"));

bookAuthHandler handler = new FacebookAuthHandler(provider);

Finally in the Lock Builder, call withAuthHandlers passing the recently created instance.

 = Lock.newBuilder(auth0, authCallback)
    .withAuthHandlers(handler)
    //...
    .build(this);

That's it! When Lock needs to authenticate using that connection name, it will ask the FacebookAuthHandler for a valid AuthProvider.

We provide this demo in the PhotosActivity class. We also use the Facebook SDK to get the User Albums and show them on a list.

Authenticate without Lock

Just create a new instance of FacebookAuthProvider with an AuthenticationAPIClient.

0 auth0 = new Auth0("auth0-client-id", "auth0-domain");
l AuthenticationAPIClient client = new AuthenticationAPIClient(auth0);
bookAuthProvider provider = new FacebookAuthProvider(client);

Override your activity's onActivityResult method and redirect the received parameters to the provider instance's authorize method.

rride
ected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (provider.authorize(requestCode, resultCode, data)) {
    return;
}
super.onActivityResult(requestCode, resultCode, data);

Call start to begin the authentication flow.

ider.start(this, callback, RC_PERMISSIONS, RC_AUTHENTICATION);

That's it! You'll receive the result in the AuthCallback you passed.

We provide this demo in the SimpleActivity class.

Additional options
Using a custom connection name

To use a custom social connection name to authorize against Auth0, call setConnection with your new connection name.

bookAuthProvider provider = new FacebookAuthProvider("my_connection_name", client);
Requesting custom Facebook Permissions

By default, the permission public_profile is requested. You can customize them by calling setPermissions with the list of Permissions.

ider.setPermissions(Arrays.asList("public_profile", "user_photos"));
Requesting custom Android Runtime Permissions

This provider doesn't require any special Android Manifest Permission to authenticate the user. But if your use case requires them, you can let the AuthProvider handle them for you. Use the setRequiredPermissions method.

ider.setRequiredPermissions(new String[]{"android.permission.GET_ACCOUNTS"});
Log out / Clear account.

To log out the user so that the next time he's prompted to input his credentials call clearSession. After you do this the provider state will be invalid and you will need to call start again before trying to authorize a result. Calling stop has the same effect.

ider.clearSession();
Remember the Last Login

By default, this provider will remember the last account used to log in. If you want to change this behavior, use the following method.

ider.rememberLastLogin(false);
Issue Reporting

If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The Responsible Disclosure Program details the procedure for disclosing security issues.

What is Auth0?

Auth0 helps you to:

Create a free account in Auth0
  1. Go to Auth0 and click Sign Up.
  2. Use Google, GitHub or Microsoft Account to login.
Author

Auth0

License

Lock-Facebook is available under the MIT license. See the LICENSE file for more info.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.