Monday, 23 April 2012

Single Sign On Facebook


Single Sign On (SSO) Using Android Native Client For Facebook :

This document will guide you through Facebook Platform integration for Android. The key steps to building a social Android app. This will include showing you how to enable Single Sign-On:

Step 1: Register your Android app with Facebook:
To begin integrating with the Facebook Platform, Click on this link: https://developers.facebook.com/apps create a new app on Facebook and enter your app's basic information.
Note your App ID. You are going to need it when integrating Facebook Android SDK into your code. You application is now set up and you’re ready to begin integrating with Facebook.

Step 2: Download Facebook Lib:

From this link git://github.com/facebook/facebook-android-sdk.git download facebook library.

Step 3: Create Facebook SDK Project:

For the first time, you will need to create a new Android project for the Facebook SDK source which can be reference from your app.
This is only required once. Open Eclipse and create a new Android Project (File | New | Project | Android Project) for the Facebook Android SDK source and later reference it from your app.
Get the content by selecting Create project from existing source and specifying the facebook directory from your git repository (~/facebook-android-sdk/facebook).


Step 4: Add reference to the Facebook SDK:

Create a new Android project for your app or use your existing project and add a reference to the Facebook SDK project. You do this by opening the properties window for your app (File | Properties | Android), pressing the Add... button in the Library area and selecting the Facebook SDK project created above.





Step 5: Add your app's signature to the Facebook App Settings:
Facebook requires an additional layer of security for mobile apps in the form of an application signature.
You need to put your Android application signature into your Facebook app settings.

From the Java JDK keytool. 

The instructions in the build step will show you how to get the application signature that you should then register in the Mobile section of the Developer App.

Using the Keytool:

Generate the Native Android App - Android Key Hash by running this command:

C:\Program Files\Java\jdk1.7.0_04\bin>keytool -v -list -alias androiddebugkey –keystore "C:\Documents and Settings\IBM\.android\debug.keystore" -storepass android –keypass android 

You application is now set up and you’re ready to begin integrating with Facebook!
Note: Keytool password : android .
You can generate a signature by running the keytool that comes with the Java JDK. The following shows how to export the key for your app using the debug defaults specified by the Android SDK and Eclipse.

PLEASE READ - the keytool.exe silently generates a keyhash even if it can't find the debug.keystore or if the password is incorrect. Make sure that you have provided the correct path to the debug.keystore. For Windows, it is generally at C:\Users\<user>\.android\ and for Mac at /Users/<user>/.android/. Also make sure you are using the correct password - for the debug keystore, use 'android' to generate the keyhash. General Rule: If the tool does not ask for password, your keystore path is incorrect. More info under 'Signing in Debug Mode' on the Signing Your Applications ( http://developer.android.com/guide/publishing/app-signing.html ). Refer to Troubleshoot section below for more tips on keyhash.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64.This tool generates a string that must be registered in the Mobile section of the Developer App for your app. Remember to click 'Save Changes' to save the keyhash.


Step 6: Enable Single Sign-On for your App:
Single Sign-On allows user to authorize your app without typing their facebook username and password. This is accomplished by sharing intent with the Facebook app. If the user has already installed and authorized the facebook app, your app can leverage the Facebook app authentication via Single Sign On. It is highly recommended that you implement SSO for your app to enable frictionless authorization. Note that the SSO will fall back to webview based oauth dialg if the Facebook app is not installed on the handset.

Step 6.1: Modify the AndroidManifest.xml for the Network calls:
Once the Facebook SDK is referenced, the app manifest needs to be modified to allow the app to make network calls to Facebook. This is accomplished by adding the following to the AndroidManifest.xml file in the app project (Note that by default the Eclipse may open the Manifest tab. Click on the AndroidManifest.xml tab in the editor's bottom bar to open the editor view): <uses-permission android:name="android.permission.INTERNET"/>


Step 6.2: Single-Sign-On (SSO):

As with the iOS SDK, one of the most compelling features of the Android SDK is Single-Sign-On (SSO). SSO lets users sign into your app using their Facebook identity. If they are already signed into the Facebook Android app on their device they do not have to even type a username and password. Further, because they are signing to your app with their Facebook identity, you will have access to their profile information and social graph.

Adding SSO to your app is very simple with the Facebook SDK. The below example outlines what code must be written to enable this feature. For the sake of simplicity, SSO functionality will be added to the Activity that was created by Eclipse when the app project was created. Open the MyGreatApp project -> src -> com.greatapp -> MyGreatActivity.java. Replace the existing code by Copy-paste the code below while replacing the "YOUR_APP_ID" with the "APP_ID" of your app and save the file:

package com.Your_app_package_name;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.android.*;
import com.facebook.android.Facebook.*;

public class MyGreatActivity extends Activity
 {
    Facebook facebook = new Facebook("YOUR_APP_ID");
   
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        facebook.authorize(this, new DialogListener() {
       
    @Override
            public void onComplete(Bundle values) {}
            @Override
            public void onFacebookError(FacebookError error) {}

            @Override
            public void onError(DialogError e) {}

            @Override
            public void onCancel() {}
        });
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

Note: For more information visit this link
    http://developers.facebook.com/docs/mobile/android/build/#sso