facebook Page Access Tokens to get user profile - node.js

First time touching things about facebook.
Trying to do facebook 3rd provider login.
The developer I worked with is doing it through back end instead of how facebook's tutorial is doing it through frontend.
Right now the login works and able to get the return of
accessToken: "EAAaz15rigu"
userID: "10928"
Now trying to get the user profile such as first, last name and avatar.
I searched around and found this documentation
https://developers.facebook.com/docs/messenger-platform/identity/user-profile/#fields
https://graph.facebook.com/<PSID>?fields=first_name,last_name,profile_pic&access_token=<PAGE_ACCESS_TOKEN>
The thing is, there isn't <PSID>Page Scope ID and <PAGE_ACCESS_TOKEN> provided
So again, I searched for page access token
https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens
https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}
this is what I see so I entered what is returned from login https://graph.facebook.com/10928/accounts?access_token=EAAaz15rigu
What I see is an empty array though, even if the array is not empty as show in the sample in the documentation. I still don't see anything that is <PSID> that I can use from my backend to get user profile.
Can someone please give me a hand to walk through this?
Thanks in advance for any help / suggestions.

Related

Facebook Graph API comments missing From (user who posted the comment)

Have you guys encounter this? Please let me know your thoughts!
The screenshot above is a response when I hit a get request to retrieve a comment from Facebook live. There are comments where the name of the user who made the comment does show up, but the majority of the comments don't have the name of the user.
Facebook documentation below shows field = from for the person that made the comment.
Facebook Graph API
The comments documentation state that the field from return a User object and my suppose is that either you don't have the permission to read all the User objects or maybe that user has set some privacy restriction; unfortunatly as you saw, the Facebook API Doc is not complete and I did not find more info.

Is it possible to access a friends Instagram pictures without his access_token?

I heard that Instagram recently changed their APIs and I have a related question to that.
Let's assume I would like to build an "Instagram feed app of people I follow". So this app would just show me the pictures of all people I follow. From what I understand this would be possible, but I would always have same manual effort:
From the Instagram developer website I understand that I need the access_token from all my friends.
Do I understand that correctly?
This would mean every time I follow someone new, I would have to get his/her access_token manually and add it into my app.
Do I understand this correctly or is there a programmatic/automated way to get the needed access_token from the new followed person?
Yes, you are correct. This is not possible at the moment. I'm not sure how you would get the access token of friends. You would have to have them login as well. BTW: This seems to be the way facebook is going (since they now control Instagram). They require that both friends have authorized your app and then they will list their followers.

Issue with commenting on Facebook posts with api

I'm a beginner on Facebook API but after reading up and understanding whatever I could I'm still stuck because I can't find any good documentation that is not outdated.
I'm trying to comment on my own post and I keep getting this error:
Publishing comments through the API is only available for page access tokens
I do understand that I require a page access token for the latest version of the API but even after getting the page access token I'm still facing this issue.
Here is a screenshot of my graph API explorer
Here I first clicked on get user access token and gave it all possible permissions. After that I clicked on get page access token and then tried to post the comment.
Note: The post was made by my ID and is visible only to me, I am sure that the user ID and post ID is correct because I am able to view its details
I also tried it using python with the token ID above and this code.
import facebook
graph = facebook.GraphAPI(access_token=token_id)
#This does give me the post details
#print (graph.get_object(id = my_id +'_10214865328931217'))
graph.put_object(parent_object=my_id+'_10214865328931217',connection_name='comments', message='Test')
But I still get the same error. Seems like there is something about the way page access tokens work that I do not understand.

Instagram API throwing OAuthAccessTokenException 400 error using client id

I was using the following api to get the latest 3 posts from public accounts to show on the website:
https://api.instagram.com/v1/users/{user-id}/media/recent/?client_id={client-id}&count=3
I had created an app to get the client-id.
However from today, this API has started throwing the following exception:
{
meta: {
error_type: "OAuthAccessTokenException",
code: 400,
error_message: "The access_token provided is invalid."
}
}
Could you please let me know as how to resolve this?
Based on the date, you probably have an older app that got hit by the API migration today, like mine. In short, Instagram decided to make developing for their platform WAY more annoying by requiring all API requests to be authenticated per user, even for data that users shares publicly. So you (like me) will likely be redesigning you app entirely.
To tell, log in to instagram.com/developer and click manage clients; then hit edit next to the set of keys your're trying to use. Up near the top, it will have a section called 'Client Status' -- if yours reads 'Sandbox Mode', fun times ahead! Hopefully you interact with less than 10 users and can stay in sandbox mode, otherwise you'll have to write an essay, film a video, and basically plead to get your permissions back (probably in a few months, when some Instagram intern finally digs his way down to you in the pile of applications). If it reads something eles, you've got another problem altogether and should thank your lucky stars.
In the meantime, I guess I'll get back to sending out dozens of emails to the maintainers of our many, many affiliated Instagram accounts to explain the issue and try to get permissions, so provided we get approved by then, all our social media displays aren't broken during a huge event Saturday. Another option might be to use the OAuth-less json response available here, but that might break terms of service.
I have a solution to this. If you are using the same code I am, which appears likely. I was pulling the last two images using this.
https://api.instagram.com/v1/users/{user-id}/media/recent/?client_id={client-id}&count=3
What I did to get this working is the following.
Login to your Instragram account you are using as the application.
Go to the developer (API) area. https://www.instagram.com/developer/clients/manage/
Manage clients. Make sure your website URL is the same as your valid redirect URL.
Add new Sandbox User. Put in the account of the IG photos you want to reach.
Hit this URL: https://api.instagram.com/oauth/authorize/?client_id=CLIENTID&redirect_uri=REDIRECT_URI&response_type=token where the client ID is the same one you used in your previous app above.
You should get back and access token URL. Copy your access token.
Login as your account that you want the IG photos of. The account you added as a sandbox user and go to developer and approve the Sandbox Invites.
Change your original URL above from https://api.instagram.com/v1/users/{user-id}/media/recent/?client_id={client-id}&count=3 to https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS_TOKEN with your access token.
This is the IG API Media endpoint documentation: https://www.instagram.com/developer/endpoints/users/
After that, it all worked for me and while you are in the sandbox, you should be able to pull the last 3 photos or at this point, figure out how to read the JSON to do so.
Has your app been approved after the June 1st Instagram platform changes?
http://developers.instagram.com/post/145262544121/instagram-platform-update-effective-june-1-2016
If you want to retrieve the user media file then try this, It's working for me
https://graph.instagram.com/me/media?fields=id,caption,media_url,media_type&access_token=ACCESS_TOKEN
For some reason the token is no more valid. Request it again.
Possible reasons why a token is no more valid:
changed password
verified the account
logged-in from a different country

Instagram this user does not exist

I'm trying to get medida data from Instagram via their REST service. I've got an access token and tried to get some media data, I'm using this query
https://api.instagram.com/v1/users/184692323/media/recent/?access_token=
I get this response
{"meta":{"error_type":"APINotFoundError","code":400,"error_message":"this user does not exist"}}
The user ID does exist, I actually tried to use Lady Gaga's user ID, which I got from here: http://jelled.com/instagram/lookup-user-id#
When I use my user-id, it works. It just seems to not work with other user ids.
What can I do? Is this something related to these new "sanbox" rules?
I think you are still running in Instagram Sandbox-mode: https://www.instagram.com/developer/sandbox/.
Citing their page: For example, if you query the /users/{user-id}/ endpoint and the {user-id} is a sandbox user, then you will get the normal API response; but if the {user-id} is not a sandbox user, you will get a APINotFound error.
I have the same issue for non-Sandbox users, which are public but nevertheless Instagram returns it's not a valid user. So the docs seem to be correct.
the user exits, but you may be blocked by instagram for spamming, usually you get that response if spam was detected by an account, try with different user access_token, it should work.
I am very late but you need to invite the user in your application's sandbox and he needs to accept your invitation to actually get any information out of it.
In addition to what Dennis said,
You need to submit your App for review if you're doing things with public profiles. It's not super complicated, but you'll need to build an actual use case for them to approve your app out of sandbox mode.
Or, you can add the users you want to play with to your sandbox app.

Resources