Get Facebook User ID from app-scoped User ID

2019-01-07 08:58发布

With the upgrade from Facebook Graph API v1.0 to v2.0, Facebook is using "App-scoped User IDs", so I cannot see the "original" user ID inside my apps anymore.

I always used the Real Time Updates and graph API calls like "https://graph.facebook.com/{postId}/comments" to analyze user activity on the Facebook page where the app was. But since these data contain the original user ID, I'm not able to match the activities to my registered users anymore!

So is there a way to get the original Facebook user ID from an app-scoped user ID? Or the other way round?

EDIT:

I ended up fetching the app-scoped IDs for all my users using the API method mentioned here: https://stackoverflow.com/a/29154912/3432305 and stored them in my database in addition to the old ID. Then, whenever an RTU arrived, for "old users" I would check which user has this app-scoped ID and process the update. At least Facebook managed to fix the bug mentioned in the comments (Get Facebook User ID from app-scoped User ID) a few days before the API v1.0 was deprecated, so for new users of my apps, it works like a charm. So far...

6条回答
兄弟一词,经得起流年.
2楼-- · 2019-01-07 09:09

I found a website can help you get facebook user id from app scoped id.

It's here http://izitools.com/en/tool/get-facebook-id-from-scoped-id

enter image description here

API

enter image description here

查看更多
冷血范
3楼-- · 2019-01-07 09:12

You can't go from scoped back to real. Your best bet is converting all of them to scoped. It's pretty easy:

https://graph.facebook.com/?ids=REAL_ID&access_token=APP_ID|APP_SECRET

Here's some simple Ruby code that does this:

require 'open-uri'
require 'json'

json = JSON.load(open("https://graph.facebook.com/?ids=#{real_id}&access_token=#{FACEBOOK_APP_ID}|#{FACEBOOK_APP_SECRET}"))
scoped_id = /app_scoped_user_id\/(\d+)\//.match(json[real_id.to_s]['link'])[1]
查看更多
forever°为你锁心
4楼-- · 2019-01-07 09:14

there is a dirty hack to retrieve original user id

http://graph.facebook.com/app-scoped-id this returns the facebook public information as follows, { "id": "app-scoped-id", "first_name": "xxxx", "gender": "male", "last_name": "yyyy", "link": "https://www.facebook.com/zzzz", "locale": "en_US", "name": "xxxx yyyy", "username": "zzzz" }

Then you make another graph api call with username http://graph.facebook.com/zzzz

This will returns the original facebook id and other public information, instead of app-scoped-id

查看更多
叼着烟拽天下
5楼-- · 2019-01-07 09:18

From your conversation between Johannes N.

Can I get the app-scoped ids (for apps I own) via the original user id. that would help too.

To get app-scoped ids from original user id can be easily done via:

https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USER_ID&access_token=ACCESS_TOKEN

enter image description here

Yo can use fields parameter to return only id:

https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USER_ID&fields=id&access_token=ACCESS_TOKEN

enter image description here

The benefit of ids instead of id because you can query multiple ids:

enter image description here *www can be remove to minimize characters count.

To get app-scoped ids from username can be easily done too:

https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USERNAME&access_token=ACCESS_TOKEN

enter image description here

查看更多
祖国的老花朵
6楼-- · 2019-01-07 09:20

there's no (simple/obvious) possibility to get a real user id based on an app-scoped user id.

查看更多
地球回转人心会变
7楼-- · 2019-01-07 09:23

https://www.facebook.com/app_scoped_user_id/670839443061245

ask yourself why derive from this link username everyone.

{
   "id": "670839443061245",
   "first_name": "Lucas",
   "gender": "male",
   "last_name": "Ou-Yang",
   "link": "https://www.facebook.com/L",
   "locale": "en_US",
   "name": "Lucas Ou-Yang",
   "username": "L"
}
查看更多
登录 后发表回答