在Facebook Graph API 2.0中获取用户名字段
“旧”Facebook Graph API有一个“用户名”字段,可用于创build一个人类可读的configuration文件URL。 我的用户名例如是“sebastian.trug”,这导致Facebook的个人资料URL http://www.facebook.com/sebastian.trug 。
使用Graph API 2.0, Facebook已经从用户数据中删除了从“/ me”中检索到的“用户名”字段 。
有没有什么办法通过2.0 API获取这些数据,或者是“username”现在被视为已弃用的字段?
Facebook摆脱了用户名,因为用户名是通过Facebook发送电子邮件的一种方式。
例如,给定urlhttp://www.facebook.com/sebastian.trug
相应的Facebook电子邮件将是sebastian.trug@facebook.com
如果通过电子邮件发送,则会直接收到messages
(如果message
设置已设置为public
),否则会收到other
收件箱。
用户对象的用户名字段已被删除,在Graph API v2.0中不存在。 API的v2.0是没有办法获得用户的FB用户名。
来源: https : //developers.facebook.com/docs/apps/changelog#v2_0_graph_api
“/我/用户名不再可用。”
@西蒙交叉 – 它被弃用logging,是的。 这不是问题,问题是如何得到它,并且 – 我想知道为什么Facebook做了这样一个可怕的select,并删除了用户名。 数百个依靠用户名在其服务上创build帐户的应用程序将被打破。
@ user3596238 – 你可以坚持使用V.1 API,这个API将在2015年4月底左右,但到目前为止还不是最好的解决scheme,但是到目前为止,Facebook可能无关紧要。 https://developers.facebook.com/docs/apps/changelog
解决scheme:除了实际的Facebooklogin之外,还要求用户input用户名? – 在我看来,这使Facebooklogin完全没有意义。
虽然2.0 SDK不再提供username
段,但如果您有用户标识号码(您可能会用它来访问图表),则很容易被刮掉。
urlfacebook.com/<user id>
将redirect到facebook.com/<username>
,然后可以提取您喜欢的内容。
我的方法是通过用户configuration文件使用nokogiri来取消用户名。 有点像这样(ruby):
html = RestClient.get("http://facebook.com/123123xxx) doc = Nokogiri::HTML(html) username = doc.css('head meta')[1].attributes["content"].value
其中一种方法是使用cURL访问facebook.com/{userid,然后按照redirect进行操作。
该页面显示为facebook.com/{username}
从@RifkiFauzi的回答启发,这里是我在纯Python中的解决scheme
#get html of a page via pure python ref. https://stackoverflow.com/a/23565355/248616 import requests r = requests.get('http://fb.com/%s' % FB_USER_ID) #open profile page of the facebook user r.raise_for_status() html = r.content #search string with regex ref. https://stackoverflow.com/a/4667014/248616 import re # m = re.search('meta http-equiv="refresh" content="0; URL=/([^?]+)\?', html) m = re.search('a class="profileLink" href="([^"]+)"', html) href = m.group(1) #will be https://www.facebook.com/$FB_USER_NAME on 201705.24 username = href.split('/')[-1] print(href) print(username)
https://graph.facebook.com/?id=100005908663675
只需将ID改为任何。
通过访问图API中的“/ me”,可以看到返回的JSON数据中的“id”字段。 我正在使用它来存储Facebook数据在我们的数据库
即使它不是解决scheme,但是不会过期的替代scheme….