How to get details for a specific post by user? - facebook-graph-api

I'd like to get the details for an individual post by the logged in user - specifically, the number of likes it's collected.
Using the Javascript API, I've got a working app ID and can login a user and get their basic info. To get info about a specific object, I think it should be:
FB.api('/1234567890_2345678901', function(response) { ...
Where the first part of the number is the user ID and the second part after the underscore is the ID of the post.
However it always returns the same error for every post ID I try:
Unsupported get request. Object with ID ... does not exist, cannot be loaded due to missing permissions, or does not support this operation.
I cannot find anything in the docs about getting details for an object. I'm not sure what additional permissions would be needed. The app control panel has no features for adding individual permissions or finding out what they would be.

You are not supposed to get any data of users who did not authorize your App. If that ID belongs to a post on another users wall, you can´t get access to it. That´s what the error message tells you - you are missing the permission to access it.
Try with an ID that belongs to a post of the currently logged in users wall and it will work. You need the user_posts permission, of course. For example: http://www.devils-heaven.com/facebook-javascript-sdk-login/

Related

Facebook OpenGraph: Getting like count of post without User Token

I have an existing app that uses the Facebook API & login that makes posts to the user's wall. For each post I store the id of that post.
What I need to accomplish is to gather like counts of those posts generated by the first app. I'm trying to write a small app that routinely pulls the like count. I've figured out how to get the like count of the post if I use a User Token - via Facebook Login. But since this app will run as a batch and not by a human, I don't want to use a Facebook login page. I could write code that simulates a user logging in but that would be a major ugly hack. I've tried to use an App Token but then the like count is always zero. I've found how to get the like count of a page without the need for a User Token http://www.techrecite.com/get-facebook-likes-count-of-a-page-using-graph-api/ but not a post
Is this even possible? If so how?
I've looked into Facebook API's subscription, but it doesn't seem possible to subscribe to a "like-a-post" event. Although I could be wrong. If so, could someone point me in the correct direction.
Thanks.

Is it possible to send a message to facebook for a user at a later time?

Suppose that a user logged into facebook on my website. On my website they write that they want to send a message to facebook. Then after some time I will log in and click to submit the message for this user.
From what I read so far it seems that this will not be possible but I want to make sure. From what I understood, once the user logs in on my website I get an access token and only using this access token can I send a message to facebook for that user. But I would think that the access token doesn't last for a long time so it won't help saving it in a DB.
Question: is there a way to do the above mentioned functionality?
You might be able to do it through Facebook maybe something like this or maybe look here (similar question, you might find useful answer)

Facebook comments - gender and location of users

Is there a way to get additional data for users that commented on a post on Facebook? So far I'm getting the message, the id and name of the user with this:
GET https://graph.facebook.com/POST_ID/comments?fields=message,from.id,from.name
I would like to additionally fetch from.gender and from.location, but this does not seem to work. Is there any other way?
The from object for a given comment only contains id and name elements.
id in the from object pertains to the user who posted a given comment. Once you have id you can query the graph API again against that user for their user details. However, you may or may not be able to retrieve location for any given user: their privacy settings may or may not expose it, or you may not have adequate permissions to retrieve more than the most generic information for that user.
You should always be able to retrieve gender and locale from a given user's endpoint in the API, however. Not that I would rely on locale for location information per se, but it may be at least marginally useful depending on your needs.

Hierarchical RESTful URL design

I have perused the questions asked about this, but I still don't have a definitive answer.
I have an application and would like to build a RESTful API to expose a subset of information. I have three resources:
users
reports
photos
Users have reports and reports have photos. Photos cannot exist outside of reports and reports cannot exist outside of users.
I have designed the following URLs for my requirements
User login, server responds with token which is sent in the header of all API calls
GET example.com/api/
Get user info
GET example.com/api/users/{username}
Get all user reports
GET example.com/api/users/{username}/reports
Get all photos of a report
GET example.com/api/users/{username}/reports/{report_id}/photos
Add a photo
POST example.com/api/users/{username}/reports/{report_id}/photos
Delete a photo
DELETE example.com/api/users/{username}/reports/{report_id}/photos/{photo_id}
Modify photo description
PUT example.com/api/users/{username}/reports/{report_id}/photos/{photo_id}
Questions
Is it good practice to add a resource id in the URL, i.e. resource/id, or should this rather be added as a query parameter?
Is this method of chaining resources, i.e. resource/id/sub-resource/id/etc., acceptable and good or should I put all my resources at the top level and specify its position with query parameters?
Nothing wrong in this design.But this creates long URL which sometime are difficult to understand and the user of the API needs to know the hierarchy.Moreover the consumer of the API need to write more code in little bit non-standard way(Even though it can be done, but will be little messy). Think this from a different perspective
You have three resources and each has its own identity.So if we refactor the above URI's it will looks like below (I am demonstrating only GET)
User Resource:
Get users list
GET example.com/api/users
Get specific user
GET example.com/api/users/{username}
Report Resource:
Get all reports
GET example.com/api/reports
Get a specific report
GET example.com/api/reports/{report_id}
Photo Resources
All Photos
GET example.com/api/photos
Specific Photo
GET example.com/api/photos/{photo_id}
User All Reports
GET example.com/api/reports?username={userName}
Specific report of a user
GET example.com/api/report?username={userName}&report_id={reportId}
User All Photos
GET example.com/api/photos?username={userName}
User All Photos for a report id (You may not need user Name if report_id is unique irrespective of the user, which will further simplify the URI)
GET example.com/api/photos?username={userName}&report_id={reportId}
All photos of a report
GET example.com/api/photos?report_id={reportId}
This simplifies the understanding and more standard code can be written on the consumer side using this approach.
IMHO you are modelling it well.
Regarding 1 I'd rather go with resource/id rather than query param. But one thing you must have in mind when modelling is the cache mechanism by proxy and so on. So do not forget the headers.
I go for query params for filtering and those sorts.
About the login, the credentials should be in the headers, and no specific resource is needed. Just apply per resource security.
I don't see anything wrong with your scheme.
Most frameworks nowadays use a similar standard for specifying url's (like Django).
In my personal opinion, it makes the URL more readable and a bit nicer for the user.

email id of user from new facebook API

I have worked earlier on facebook API. I successfully used it and fetched all friend lists with their email ids. I was also able to get user email id who logged in through facebook API.
Now in gap of 7-8 months I found that faceAPI development section has been changed . New one is something different.
And now I am facing problem to get email id after user login at facebook.Yet all other details are coming like user name .user id and location except email id.
Old script is also not working with me. Could you help me to get email id of user who get login by facebook at my website.
Thanks for your cooperation.
No one will do your homework (upgrade the code for you)
Read the most current documentation
Accessing users e-mails require a special permission email
Users may choose not sharing their direct e-mail with you
You didn't say what technology you are using, but you can check the PHP-SDK example page to get started.
Direct Access Method:
Log into Facebook under your name. If you need an "Access Token", Click on the Extended Permissions and click the "read_friendlist" check box to get your Access Token and then
submit your query. You may need to "Allow" access, so just follow the prompts given.
Voila! You now have the usernames for everyone on your Friends List. The "username" parameter in the query will give you the contact email "message to that person" and you append #facebook.com and send them a message. Very simple.
http://developers.facebook.com/tools/explorer?fql=SELECT%20username%20FROM%20user%20WHERE%20uid%20IN%20%28SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20%3D%20me%28%29%29%20ORDER%20BY%20name
I had been using the import function in Yahoo Mail but now it has been limited to the first 50 names on your friends list. Where I work, they have over 6,000 friends between the two pages. This is a very simple solution to my problem. And now I can write a very small PHP sendmail program and send EVERYONE on the friends list an email message that goes directly to their messages. No more viewing page sources or manually doing this.
I can create a special email list on IFanz that will handle all dups, even if I repeat this process on a monthly basis to acquire new emails.
-SAB