--> android source code full: Login with facebook | Deskripsi Singkat Blog di Sini

Find The Complete Source Code Android


Showing posts with label Login with facebook. Show all posts
Showing posts with label Login with facebook. Show all posts

Tuesday, December 6, 2016

Facebook Integration

Facebook Integration


Facebook Integration - To provide the one click signup and signin process in the application, Android developers provide the login with social sites facilities like- facebook, twitter, linkedin, g+ etc. This tutorial guide you for facebook one click signup and signin process.




Steps to use login with facebook in your project.
  1. Crate a project in android studio.
  2. Open build.gradle(project) and add a repositories

    repositories {
    mavenCentral()
    }
      
  3. Open build.gradle(app) and add a dependency

    compile 'com.facebook.android:facebook-android-sdk:[4,5)'
     
  4.  Click on Sync Now.
  5.  Now create an application on facebook developer console (Create Facebook application on developer consol).

  6. If you are on quick start then skip (6,7,8) steps else follow this-
    1. Select setting from left menu menu.


  7.  Now scroll down the page and add android platform.

  8.  A popup will be open then you select the android as a platform.

  9.  A popup will be shown, Then you select the android as a platform.
  10. fill package name and first activity
  11.  Now copy keyhash from logcat and fill here

  12. Now this setup has finished
  13. Select app review and click on make "Your $App_Name public?"
  14. Now check your application status on the dashboard. Green circle shows that your application is ready to integrate.
  15. Copy "App ID" and open your string.xml and add a string for facebook application id -

     <string name="facebook_app_id">1460300553984844</string> 

  16. Open your main_activity.xml and update it-
    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context="com.pankaj.fb.integration.demo.MainActivity">

    <!--Profile Pic-->
    <com.facebook.login.widget.ProfilePictureView
    android:id="@+id/ppview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="30dp"
    android:layout_marginTop="30dp" />

    <!--Login Button-->
    <com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="30dp"
    android:layout_marginTop="30dp" />

    </LinearLayout>

     
  17. Open manifest and update it-

    <?xml version="1.0" encoding="utf-8"?>

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pankaj.fb.integration.demo">

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

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <!--activity-->
    <activity android:name="com.pankaj.fb.integration.demo.MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

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

    </application>
    </manifest>
     
  18. Open your MainActivity.JAVA class and update it -

    package com.pankaj.fb.integration.demo;
    import android.content.Intent;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.Signature;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Base64;
    import android.util.Log;
    import android.widget.Toast;
    import com.facebook.AccessToken;
    import com.facebook.CallbackManager;
    import com.facebook.FacebookCallback;
    import com.facebook.FacebookException;
    import com.facebook.FacebookSdk;
    import com.facebook.GraphRequest;
    import com.facebook.GraphResponse;
    import com.facebook.appevents.AppEventsLogger;
    import com.facebook.login.LoginResult;
    import com.facebook.login.widget.LoginButton;
    import com.facebook.login.widget.ProfilePictureView;
    import org.json.JSONException;
    import org.json.JSONObject;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.HashMap;
    /*
    *
    * https://developers.facebook.com/apps/
    *
    * */
    public class MainActivity extends AppCompatActivity {

    //create objects
    private LoginButton loginButton;
    private CallbackManager callbackManager;
    private ProfilePictureView ppview;
    private HashMap<String, String> userData;

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

    genrateKeyHash();

    //__________initialize facebook sdk
    FacebookSdk.sdkInitialize(getApplicationContext());

    //__________Activate application logger
    AppEventsLogger.activateApp(this);

    //__________set main activity view
    setContentView(R.layout.activity_main);

    //__________initialize objects
    loginButton = (LoginButton) findViewById(R.id.login_button);
    ppview = (ProfilePictureView) findViewById(R.id.ppview);
    callbackManager = CallbackManager.Factory.create();

    //__________set permission for access required data
    loginButton.setReadPermissions("email,public_profile");

    //__________check for already login
    if (AccessToken.getCurrentAccessToken() != null) {
    //__________set image if already login
    ppview.setProfileId(AccessToken.getCurrentAccessToken().getUserId());
    }
    fbLogin();
    }

    public void fbLogin() {

    //__________Callback login
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

    @Override
    public void onSuccess(LoginResult loginResult) {
    //__________user image url
    final String image = "https://graph.facebook.com/" + AccessToken.getCurrentAccessToken().getUserId() + "/picture?type=large&width=720&height=720";

    //__________Create a graph request
    GraphRequest request = GraphRequest.newMeRequest(
    AccessToken.getCurrentAccessToken(),
    new GraphRequest.GraphJSONObjectCallback() {

    @Override
    public void onCompleted(
    JSONObject object,
    GraphResponse response) {

    //__________process this data
    Log.e("response", response.toString());
    Log.e("object", object.toString());
    Log.e("image", image);
    try {

    //_______put data into user data map
    userData = new HashMap<String, String>();
    userData.put("id", object.get("id").toString());
    userData.put("email", object.get("email").toString());
    userData.put("name", object.get("name").toString());

    } catch (JSONException e) {
    e.printStackTrace();
    }

    //__________set user image
    ppview.setProfileId(AccessToken.getCurrentAccessToken().getUserId());

    //___________show the detail in toast message
    Toast.makeText(MainActivity.this, "Name : " + userData.get("name") + "\nEmail : " + userData.get("email") + "\nID : " + userData.get("id"), Toast.LENGTH_SHORT).show();
    }
    });

    //__________add parameters for required data
    Bundle parameters = new Bundle();
    parameters.putString("fields", "id,name,email");
    request.setParameters(parameters);

    //__________eqecute request
    request.executeAsync();
    }

    @Override
    public void onCancel() {
    // App code
    }

    @Override
    public void onError(FacebookException exception) {
    // App code
    }
    });
    }

    //____________genrate key has
    private void genrateKeyHash() {
    try {
    PackageInfo info = getPackageManager().getPackageInfo("com.pankaj.fb.integration.demo", 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 (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    }
    }

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





  19. Now all the development steps for Login with facebook has completed, Please run the application and see the screen of device.



  20. Now click on "Login with facebook" and see the screen - 


    Fill the credential

  21. Now yow will see a screen to got permission click on "Continue" and see the screen - 




  22. Now see the logcate section-




  23. Finally login with facebook has completed and you got data(id,name,email and profile picture), please see the screen-







  24. Good bye, Thanks to read this blog.