在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….