Finally, I found how to do it.
You need to declare two:
Facebook facebookClient; SharedPreferences mPrefs;
In the onCreate function, I initialize facebookClient using facebook AppID.
The class that dines sharing facebook must be Activity
There are three functions that I added to the action:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); facebookClient.authorizeCallback(requestCode, resultCode, data); } public void loginToFacebook() { mPrefs = getPreferences(MODE_PRIVATE); String access_token = mPrefs.getString("access_token", null); long expires = mPrefs.getLong("access_expires", 0); if (access_token != null) { facebookClient.setAccessToken(access_token); } if (expires != 0) { facebookClient.setAccessExpires(expires); } if (!facebookClient.isSessionValid()) { facebookClient.authorize(this, new String[] { "publish_stream" }, new DialogListener() { @Override public void onCancel() { // Function to handle cancel event } @Override public void onComplete(Bundle values) { // Function to handle complete event // Edit Preferences and update facebook acess_token SharedPreferences.Editor editor = mPrefs.edit(); editor.putString("access_token", facebookClient.getAccessToken()); editor.putLong("access_expires", facebookClient.getAccessExpires()); editor.commit(); postToWall(); } @Override public void onError(DialogError error) { // Function to handle error } @Override public void onFacebookError(FacebookError fberror) { // Function to handle Facebook errors } }); } } private void postToWall() { Bundle parameters = new Bundle(); parameters.putString("name", "Battery Monitor"); parameters.putString("link", "https://play.google.com/store/apps/details?id=com.ck.batterymonitor"); parameters.putString("picture", "link to the picture"); parameters.putString("display", "page"); // parameters.putString("app_id", "228476323938322"); facebookClient.dialog(MainActivity.this, "feed", parameters, new DialogListener() { @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub } @Override public void onError(DialogError e) { // TODO Auto-generated method stub } @Override public void onComplete(Bundle values) { // TODO Auto-generated method stub } @Override public void onCancel() { // TODO Auto-generated method stub } }); }
and finally
ImageButton facebookButton = (ImageButton) findViewById(R.id.button_FacebookShare); facebookButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { loginToFacebook(); if (facebookClient.isSessionValid()) { postToWall(); } } });
It makes facebook login automatically and then moves facebook share \ post dialog. The code was taken from this tutorial
source share