How to send facebook link from Android app using FB API?

I watch the whole Internet and cannot find how to send a link to a specific photo on my facebook wall using fb sdk \ api.

I know this is part of the code I need to use:

Facebook facebookClient = new Facebook("fb_App_id"); Bundle parameters = new Bundle(); parameters.putString("message", "Test Photo"); parameters.putString("link", "https://www.google.com"); parameters.putString("picture", "link to some pictrue"); facebookClient.dialog(MainActivity.this, "stream.publish", 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 } }); 

When I try to use this code, I get a "Source not found" error. I think that I am missing the connection \ verification step ...

How can I make it work?

Another thing: if I use the FB SDK in my personal application, which I use on Google Play, and this application is FREE, but there is an advertisement on it, can I use the FB SDK in my application?

+4
source share
2 answers

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

+4
source

I assume your problem is that you are using stream.publish path that is deprecated:

Please note: we are in the process of canceling the REST API, so if you are creating a new application, you should not use this function. Instead, use the Graph API and the POST Post object to feed connection of the User object

instead, do the following:

 facebookClient.dialog(MainActivity.this, "feed", parameters, new DialogListener() { ... }); 
+1
source

All Articles