I am using facebook sdk 3.6 for android. I am trying to share link to users fb wall through my app.
I have used
Bundle postParam = new Bundle();
postParam.putString("link","http://mylink.com/image/09324 324.jpg"
postParam.putString("caption","my caption");
… … …
Request request = new Request(session, "me/feed", postParam, HttpMethod.POST, reqCallback);
RequestAsyncTask reqTask = new RequestAsyncTask(request);
reqTask.execute();
The link contains space character.
I can visit that link from browser simply by replacing the space character by %20. But when i do the same using link.replaceAll(" ","%20");, i get Facebook api exception,
ErrorMessage = This link could not be posted.
ErrorCode = 1500
ErrorType= FacebookApiException
I supposed this as url encoding problem, but it is neither get solved using URLEncoder nor by replacing space by %20 by replaceAll method of String object.
There are no any non-printable characters in the string.
Note: The same link when copied from log cat output and added back to that bundle works fine.
Update: When i retried to post the same link (not log cat copied) from program, it get successfully posted.
What is the problem and how could it be solved?
Sometimes Facebook will block a link or domain from their blacklist. One way to test this is if you try to post directly onto Facebook with the same link.
Link below might be of help, they suggest you use https://safeweb.norton.com to if the link is safe or not and therefore blacklisted.
https://www.facebook.com/help/community/question/?id=541062392623556
hmmm maybe using
link.replaceAll("\\s","");
\s = Anything that is a space character (including space, tab characters etc)
as you can see here:
Answer
Hope it helps :)
Actually i have used facebook shareDialog and present user with the status dialog box where app can populate the link, picture,descriptionandmessage`(message is only populated on webview i.e. in device with no fb application installed) property and the user can edit/fill in the status and post on his on timeline.
This is more nicer way to post on somebody's wall because the user can see what he is posting.
Sorry to answer my own question so lately, though i have solved it already.
Related
How can i post message along with Picture using Facebook SDK 3.0 on Android,
The link -> can post small pic with link and all other information.
http://developers.facebook.com/docs/howtos/androidsdk/3.0/feed-dialog/
What i want, is only to post Pic on wall with message, not a link with description ?
I want grab screen shot of my current Android screen that i did and saved it into SD card, i need to post it with message on custom button click.
How can i do this with Facebook SDK 3.0 for android ?
You can use the Graph API to post photos to a user's wall.
See the reference page for more details.
In the Facebook SDK, you would use the Request class to make Graph API calls.
You can use the newUploadPhotoRequest method to add a photo.
If you want to add a description as well, try setting the "message" parameter:
Request photoRequest = Request.newUploadPhotoRequest(...);
Bundle params = photoRequest.getParameters();
params.putString("message", "description goes here");
photoRequest.executeAsync();
Facebook changed this implementation for there version 2 Graph API requests, they recommend a Custom Story instead of posting (if you have your own content to put on the wall of the facebook user beside his comment, or even without his comment)
documentation goes here :
https://developers.facebook.com/docs/android/open-graph?locale=en_GB
just an error in the documentation, the facebook Open Graph objects are refered to by a colon, and not a dot, for example
they mention an open graph Object named "book" in a work space named "books" that way
"books.book"
the correct way is
"books:book"
and after you finish implementation you will need to review your application to facebook, which it's documentation goes here as well
https://developers.facebook.com/docs/apps/review?locale=en_GB
i really hate facebook documentation, it sucks
I need to search facebook user by using his name or mail-id just like how it works in facebook search box. Any API's available for that.
Thanks in advance.
You will get a bunch of options for searching at this link here: https://developers.facebook.com/docs/reference/api/. On this page, you will need to scroll down a bit till you find the Searching heading.
I am personally, not aware of any provision to search using the email address.
I think you should take a look to the facebook developer documents talking about android and and the example provide in the SDK first
https://developers.facebook.com/docs/mobile/android/build/
It will help you to recognize how to use the facebook-android-sdk
Here's are the code
Bundle params = new Bundle();
params.putString("q", "Your Name");
params.putString("type", "user");//fix
String resp = fb.request("search", params, "GET");//call the request function of android sdk 2.X, ensure you have well setup the library and logged
I have spent quite much time trying to implement Facebook share with no success. I have tried various implementations and read quite a few Q&As related to similar problems I had occurred.
I have as much as simple Facebook Example does. What I want is to set description or at least message of the feed dialog. This is what I have added to example's code:
Bundle parameters = new Bundle();
parameters.putString("caption", "1000vaikai Caption...");
parameters.putString("description", "This is a description"); // the message to post to the wall
parameters.putString("user_message_prompt", "This is message prompt");
parameters.putString("user_message", "MEEEESAGE");
mFacebook.dialog(Example.this, "feed", parameters,
new SampleDialogListener());
But it has no effect. There is nothing preset, just a plain feed dialog. Here it says dialog methods has key-value parameters but I can't find a list of them. As you can see, I tried using parameters from the feed URL but it doesn't work.
Anyone got it working properly?
EDIT
I hacked Facebook SDK and it seems to generate proper URL (https://m.facebook.com/dialog/feed + my parameters + ones taken from Facebook SDK itself). That means it DOES use same parameters as the ones listed in documentation about feed dialog page. But it still doesn't work. These parameters are being set:
user_message
redirect_uri
description
app_id
display
caption
access_token
user_message_prompt
Only app_id (I can see my app name), access_token (share actually works) and redirect_uri (it redirects back to mobile app) seem to have the effect
So I have figured out that you must provide either a link or picture. If not - it simply ignores all the over parameters.
I have a lot of apps published using the FB android sdk
github.com/facebook/facebook-android-sdk
All my applications that use FB stopped working since few days.
This is necessarily a change or a bug from FB side, because nothing has changed in my applications, It worked for months.
The dialog that opens to post a message ("stream.publish") seems not use the param "message", the form opens but the text box is empty!
Bundle parameters = new Bundle();
parameters.putString("message", "test message");
mFacebook.dialog(Example.this, "stream.publish", parameters,new SampleDialogListener());
Using debug I saw the URL with the "message" param:
https://m.facebook.com/dialog/stream.publish?message=test+message&app_id=....
The text input in the webview is emtpy!
Somebody have an idea or a workaround to fix this issue?
Try "feed" instead of "stream.publish"
Had the same problem for the last few days. Looks like Facebook is deprecating the Stream API: http://developers.facebook.com/docs/reference/rest/stream.publish/, not sure if this has anything to do with that.
Anyway, switching to using the Graph API's 'feed' method worked for me.
I am trying to let users "like" a Facebook fan page from within an Android app. I am able to successfully "like" objects such as wall comments using code like this,
mFacebook = new Facebook(APP_ID);
SessionStore.restore(mFacebook, this);
mAsyncRunner = new AsyncFacebookRunner(mFacebook);
Bundle parameters = new Bundle();
mAsyncRunner.request(COMMENT_ID + "/likes", parameters, "POST", new MyRequestListener(), "");
However, if I put in a page id rather than a comment id, I get this error message in the Facebook response,
Response: {"error":{"type":"OAuthException","message":"(#200) App does not have permission to make this call"}}
I am obtaining both the "publish_stream" and "offline_access" publishing permissions at login, and they are given to the Facebook object with SessionStore.restore().
1) Does Facebook let apps "like" fan pages?
2) If so, any ideas on what I am doing wrong?
Thanks,
Matt
The Facebook documentation for Pages has been updated and is current (see https://developers.facebook.com/docs/reference/api/page/). You cannot like a Page via the Graph API, even though you can read the like count information.
As other answers say, it is not possible to 'like' pages via the Graph API.
The confusion in this topic comes from the API documentation, where is says You can comment on or like any object that has a /comments or /likes connection (The key term here is connection)
Going a little deeper:
Any object (in this case a Page), has a number of Fields and Connections. Fields are basically used to access the object information and Connections are used to perform operations in that object.
In sum, a Page doesn't have a /likes Connection, but it has a /likes Field, reason why we can get the number of likes of a given page, but we cannot like a page.
Unfortunately, as far as I know so far, you can't like Pages via the API. You can render a Like button via a web view, but I think you're out of luck here at least. You can (as you note) like comments and posts, but pages still require direct user interaction.