/EasyFacebookConnect

Easy integration with Facebook for User authenticate purpose, in Android

Primary LanguageJava

EasyFacebookConnect

EasyFacebookConnect is an Android library which makes life easier for the developer who wants to user Facebook SDK. You won't need to spend a few hours learning Facebook SDK for trying to implement login and other features.

Currently, it provides following features:

  • Login with Facebook.
  • Get User information.
  • Upload user status to desired application.
  • Upload photo to desired application.

Screenshots

Usage

1 - Create Fabook App

  • Create a new Facebook app.

  • Once created, note down the app ID shown at the top of the dashboard page. You'll need to add this to your project files.

Alternatively, you can, of course, use the ID of an existing app.

In either case, you will also need to associate your Android key hash with the app. Click 'Edit App' and open up the 'Native Android App' section at the bottom of the dashboard. Add the key hash that you obtained at the end of the previous step with the keytool app.

Save this change.

You will also need to return to this dashboard and add your app's package name and main activity class once you have created a new Android project itself.

2 - In your App

  • Register the package and activity with Facebook

At this point, you should return to the App Dashboard on the Facebook Developers site and add your Android app's package and activity names to the Android settings. Also enable 'Facebook Login':

To generate your key hash on your local computer, you can run Java's keytool utility:

Mac Os X: keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 Windows: keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | openssl sha1 -binary | openssl base64

But I entirely RECOMMEND you, using this code in your activity, for avoiding problems:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

    ...

Save your changes and re-run the sample. Check your logcat output for a message similar to this:

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

Save the printed key hash in your developer profile.

  • Link to the EasyFacebookConnect project and configure the Facebook app ID.

To add the Facebook app ID into your project, open up the strings.xml file in the res/values folder of your project. You need to add an app_id string containing the ID you obtained in the previous step.

Example: 497906953566757

Next, open the AndroidManifest.xml file in the root of the project. Add a 'Uses Permission' item named android.permission.INTERNET

 <uses-permission android:name="android.permission.INTERNET"/>

Also, you must add this into your Application code:

<activity
    android:name="com.facebook.LoginActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/applicationId" />

2 - Finally

In your activity, extends EasyFacebookActivity and call connect() method. It will be necessary a listener parameter, which will provide the necessary callbacks for working as any method expected. Here is an example:

connect(new EasySessionListener() {

    ProgressDialog progressDialog;

    @Override
    public void onStart() {
        super.onStart();
        progressDialog = new ProgressDialog(HomeActivity.this);
        progressDialog.setIndeterminate(true);
        progressDialog.setMessage("Cargando...");
        progressDialog.show();
    }

    @Override
    public void onSuccess(Response response) {
        super.onSuccess(response);
    }

    @Override
    public void onFinish() {
        super.onFinish();
        progressDialog.dismiss();
        //doSomething
    }

    @Override
    public void onError(FacebookRequestError error) {
        super.onError(error);
        Toast.makeText(HomeActivity.this, error.getErrorMessage(), Toast.LENGTH_LONG).show();
    }

    public void onClosedLoginFailed(Session session, SessionState state, Exception exception) {
        Toast.makeText(HomeActivity.this, state.toString(), Toast.LENGTH_LONG).show();
    }

    public void onCreated(Session session, SessionState state, Exception exception) {
        Toast.makeText(HomeActivity.this, state.toString(), Toast.LENGTH_LONG).show();
    }

    public void onClosed(Session session, SessionState state, Exception exception) {
        Toast.makeText(HomeActivity.this, state.toString(), Toast.LENGTH_LONG).show();
    }

});

Developed By

Follow me on Twitter Follow me on Google Plus Add me to Linkedin

License

Copyright 2013 m3n0R

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.