Any Example showing how to login using Facebook SDK 4.0 in Android either by using own button or Facebook Button? Any Example showing how to login using Facebook SDK 4.0 in Android either by using own button or Facebook Button? android android

Any Example showing how to login using Facebook SDK 4.0 in Android either by using own button or Facebook Button?


This might help you

// Custom buttonprivate Button fbbutton;// Creating Facebook CallbackManager Valuepublic static CallbackManager callbackmanager;@Overrideprotected void onCreate(final Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Initialize SDK before setContentView(Layout ID)    FacebookSdk.sdkInitialize(getApplicationContext());    setContentView(R.layout.activity_main);    // Initialize layout button    fbbutton = (Button) findViewById(R.id.button2);    fbbutton.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View v) {            // Call private method            onFblogin();        }    });}// Private method to handle Facebook login and callbackprivate void onFblogin(){    callbackmanager = CallbackManager.Factory.create();    // Set permissions     LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email","user_photos","public_profile"));    LoginManager.getInstance().registerCallback(callbackmanager,            new FacebookCallback<LoginResult>() {                @Override                public void onSuccess(LoginResult loginResult) {                    System.out.println("Success");                    GraphRequest.newMeRequest(                            loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {                                @Override                                public void onCompleted(JSONObject json, GraphResponse response) {                                    if (response.getError() != null) {                                        // handle error                                        System.out.println("ERROR");                                    } else {                                        System.out.println("Success");                                        try {                                            String jsonresult = String.valueOf(json);                                            System.out.println("JSON Result"+jsonresult);                                            String str_email = json.getString("email");                                            String str_id = json.getString("id");                                            String str_firstname = json.getString("first_name");                                            String str_lastname = json.getString("last_name");                                        } catch (JSONException e) {                                            e.printStackTrace();                                        }                                    }                                }                            }).executeAsync();                }                @Override                public void onCancel() {                    Log.d(TAG_CANCEL,"On cancel");                }                @Override                public void onError(FacebookException error) {                     Log.d(TAG_ERROR,error.toString());                }    });}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    callbackmanager.onActivityResult(requestCode, resultCode, data);}

In manifest add following,

<application    android:allowBackup="true"    android:icon="@drawable/app_icon"    android:label="@string/app_name"    android:theme="@style/AppTheme" >    .    .     <!-- [START Facebook] -->    <activity        android:name="com.facebook.FacebookActivity"        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"        android:label="@string/app_name"        android:theme="@android:style/Theme.Translucent.NoTitleBar" />    <meta-data        android:name="com.facebook.sdk.ApplicationId"        android:value="@string/facebook_app_id" />    <!-- [END Facebook] -->    .    .</application>


The best solution is to log in by using LoginManager. Here is how I managed this ( on click is made with ButterKnife ):

 @Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);            mCallbackManager = CallbackManager.Factory.create();}@Overridepublic void onViewCreated(View view, @Nullable Bundle savedInstanceState) {    super.onViewCreated(view, savedInstanceState);    LoginManager.getInstance().registerCallback(mCallbackManager, this);}@OnClick(R.id.facebook_login_button)@SuppressWarnings("unused")public void loginWithFacebookAccount() {    LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email"));}@Overridepublic void onSuccess(LoginResult loginResult) {    Bundle parameters = new Bundle();    parameters.putString("fields", "id,name,last_name,link,email,picture");    GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), (jsonObject, graphResponse) -> {        String id = null;        if (jsonObject != null) {            try {                id = jsonObject.getString("id");            } catch (JSONException e) {                e.printStackTrace();            }                        }    });    request.setParameters(parameters);    request.executeAsync();}@Overridepublic void onCancel() {}@Overridepublic void onError(FacebookException e) {}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if (resultCode == Activity.RESULT_OK) {        mCallbackManager.onActivityResult(requestCode, resultCode, data);               }}

So this is how I've made it. Feel free to ask ;)


public class AuthWFacebookSDKFour extends Activity implements View.OnClickListener,FacebookCallback<LoginResult>   {    List<String> permissionNeeds=Arrays.asList("user_photos","friends_photos", "email", "user_birthday", "user_friends");    //facebook callbacks manager    private CallbackManager cm;    private LoginButton mFbLoginButton;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //init facebook sdk and         FacebookSdk.sdkInitialize(getApplicationContext());        //instantiate callbacks manager        mCallbackManager = CallbackManager.Factory.create();        mFbLoginButton=(LoginButton)findViewById(R.id.FBBUTTONID);        //set permissions mFbLoginButton.setReadPermissions(ApplicationContext.facebookPermissions);        // register callback        //means hey facebook after login call onActivityResult of **this**          mFbLoginButton.registerCallback(mCallbackManager, this);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        //manage login result        mCallbackManager.onActivityResult(requestCode, resultCode, data);    }    @Override    public void onSuccess(LoginResult loginResults) {        //login ok  get access token         AccessToken.getActiveAccessToken();       }    @Override    public void onCancel() {        Log.e(TAG(),"facebook login canceled");    }    @Override    public void onError(FacebookException e) {        Log.e(TAG(),"facebook login failed error");    }}

remember to insert in manifest

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