we need to add this two libraries in gradle file
gradle.app
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.squareup.picasso:picasso:2.3.2'}
First gradle for the facebook integration and other is for downloading image.
Create activity_login.xml file and paste this code.
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.arpit.facebooklogin.LoginActivity">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="90dp"
android:textSize="18sp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Then create LoginActivity.java and paste this code.
gradle.app
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.squareup.picasso:picasso:2.3.2'}
First gradle for the facebook integration and other is for downloading image.
Create activity_login.xml file and paste this code.
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.arpit.facebooklogin.LoginActivity">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="90dp"
android:textSize="18sp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Then create LoginActivity.java and paste this code.
LoginActivity.java
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;
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 org.json.JSONException;
import org.json.JSONObject;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
public class LoginActivity extends AppCompatActivity {
private CallbackManager callbackManager;
private LoginButton fbLoginButton;
static String Name, Email, ProfilePic, DOB;
// flag for Internet connection status
Boolean isInternetPresent = false;
// Connection detector class
ConnectionDetector cd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
//You need this method to be used only once to configure
//your key hash in your App Console at
// developers.facebook.com/apps
showHashKey(LoginActivity.this);
// creating connection detector class instance
cd = new ConnectionDetector(getApplicationContext());
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
setContentView(R.layout.activity_login);
fbLoginButton = (LoginButton) findViewById(R.id.login_button);
fbLoginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday, user_friends"));
fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
Log.v("Profile --------- ", response.toString());
try {
Name = object.getString("name");
Email = object.getString("email");
DOB = object.getString("birthday");
Log.v("Email = ", " " + Email);
// Toast.makeText(getApplicationContext(), "Name " + Name, Toast.LENGTH_LONG).show();
Toast.makeText(LoginActivity.this, "Login Successful!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
System.out.println("Facebook Login Successful!");
System.out.println("Logged in user Details : ");
System.out.println("--------------------------");
System.out.println("User ID : " + loginResult.getAccessToken().getUserId());
System.out.println("Authentication Token : " + loginResult.getAccessToken().getToken());
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this, "Login cancelled by user!", Toast.LENGTH_LONG).show();
System.out.println("Facebook Login failed!!");
}
@Override
public void onError(FacebookException e) {
Toast.makeText(LoginActivity.this, "Login unsuccessful!", Toast.LENGTH_LONG).show();
System.out.println("Facebook Login failed!! because of " + e.getCause().toString());
}
});
}
@Override
protected void onResume() {
super.onResume();
// Logs 'install' and 'app activate' App Events.
AppEventsLogger.activateApp(this);
}
@Override
protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event.
AppEventsLogger.deactivateApp(this);
}
public static void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.arpit.facebooklogin", PackageManager.GET_SIGNATURES); //Your package name here
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
@Override
protected void onActivityResult(int reqCode, int resCode, Intent i) {
callbackManager.onActivityResult(reqCode, resCode, i);
}
}
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;
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 org.json.JSONException;
import org.json.JSONObject;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
public class LoginActivity extends AppCompatActivity {
private CallbackManager callbackManager;
private LoginButton fbLoginButton;
static String Name, Email, ProfilePic, DOB;
// flag for Internet connection status
Boolean isInternetPresent = false;
// Connection detector class
ConnectionDetector cd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
//You need this method to be used only once to configure
//your key hash in your App Console at
// developers.facebook.com/apps
showHashKey(LoginActivity.this);
// creating connection detector class instance
cd = new ConnectionDetector(getApplicationContext());
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
setContentView(R.layout.activity_login);
fbLoginButton = (LoginButton) findViewById(R.id.login_button);
fbLoginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday, user_friends"));
fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
Log.v("Profile --------- ", response.toString());
try {
Name = object.getString("name");
Email = object.getString("email");
DOB = object.getString("birthday");
Log.v("Email = ", " " + Email);
// Toast.makeText(getApplicationContext(), "Name " + Name, Toast.LENGTH_LONG).show();
Toast.makeText(LoginActivity.this, "Login Successful!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
System.out.println("Facebook Login Successful!");
System.out.println("Logged in user Details : ");
System.out.println("--------------------------");
System.out.println("User ID : " + loginResult.getAccessToken().getUserId());
System.out.println("Authentication Token : " + loginResult.getAccessToken().getToken());
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this, "Login cancelled by user!", Toast.LENGTH_LONG).show();
System.out.println("Facebook Login failed!!");
}
@Override
public void onError(FacebookException e) {
Toast.makeText(LoginActivity.this, "Login unsuccessful!", Toast.LENGTH_LONG).show();
System.out.println("Facebook Login failed!! because of " + e.getCause().toString());
}
});
}
@Override
protected void onResume() {
super.onResume();
// Logs 'install' and 'app activate' App Events.
AppEventsLogger.activateApp(this);
}
@Override
protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event.
AppEventsLogger.deactivateApp(this);
}
public static void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.arpit.facebooklogin", PackageManager.GET_SIGNATURES); //Your package name here
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
@Override
protected void onActivityResult(int reqCode, int resCode, Intent i) {
callbackManager.onActivityResult(reqCode, resCode, i);
}
}
then get the profile info in this screen activity_main.xml
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="9dp">
<TextView
android:id="@+id/Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:text="Name : "
android:textColor="@color/colorPrimaryDark"
android:textStyle="bold"
android:layout_marginTop="20dp"
android:layout_below="@+id/imageView"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/Email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email : "
android:textColor="@color/colorPrimaryDark"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_below="@+id/Name"
android:layout_alignLeft="@+id/Name"
android:layout_alignStart="@+id/Name"
android:layout_marginTop="15dp" />
<TextView
android:id="@+id/Dob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:textColor="@color/colorPrimaryDark"
android:text="D.O.B : "
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_below="@+id/Email"
android:layout_alignLeft="@+id/Email"
android:layout_alignStart="@+id/Email" />
<Button
android:id="@+id/btn_Logout"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@color/com_facebook_blue"
android:textColor="@color/cardview_light_background"
android:textSize="18sp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="141dp"
android:text="Logout" />
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="15dp"
android:background="@drawable/com_facebook_profile_picture_blank_square"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</RelativeLayout>
copy this code into your MainActivity.java.
MainActivity.java
public class MainActivity extends AppCompatActivity {
TextView Name,Email,DOB;
ImageView ProfilePic;
Button Logout;
String ImgURL;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Name=(TextView)findViewById(R.id.Name);
Email=(TextView)findViewById(R.id.Email);
DOB=(TextView)findViewById(R.id.Dob);
Logout = (Button)findViewById(R.id.btn_Logout);
ProfilePic=(ImageView)findViewById(R.id.imageView);
Name.setText("Name : "+LoginActivity.Name);
Email.setText("Email : "+LoginActivity.Email);
DOB.setText("DOB : "+LoginActivity.DOB);
//For the profile picture try{
Profile profile = Profile.getCurrentProfile();
ImgURL = "https://graph.facebook.com/"+profile.getId()+"/picture?type=large";
Picasso.with(MainActivity.this)
.load("" + ImgURL)
.into(ProfilePic);
}catch (Exception e){
e.printStackTrace();
}
Logout.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Toast.makeText(MainActivity.this, "Logout clicked...", Toast.LENGTH_SHORT).show();
//For Logout Facebook SDK LoginManager.getInstance().logOut();
Intent intent =new Intent(MainActivity.this,LoginActivity.class);
startActivity(intent);
}
});
}
@Override protected void onStart() {
super.onStart();
}
@Override protected void onResume() {
super.onResume();
// Logs 'install' and 'app activate' App Events. AppEventsLogger.activateApp(this);
}
@Override protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event. AppEventsLogger.deactivateApp(this);
}
@Override public void onBackPressed() {
// super.onBackPressed(); }
}
This is my gradle file compare to your gradle file
gradle.app
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.arpit.facebooklogin"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.squareup.picasso:picasso:2.3.2'
}
Note: Don't forget to change your facebook_app_id (path=res>values>string.xml) after download
Comments
Post a Comment