在Facebook Graph API 2.0中获取用户名字段

时间:2014-05-02 12:43:31

标签: facebook facebook-graph-api

" old" Facebook Graph API有一个"用户名"可用于创建人类可读配置文件URL的字段。我的用户名例如是" sebastian.trug"这会产生Facebook个人资料网址http://www.facebook.com/sebastian.trug

使用来自" / me"的用户数据中的Graph API 2.0 Facebook has removed the "username" field

有没有办法通过2.0 API获取这些数据,或者是"用户名"现在被视为已弃用的字段?

8 个答案:

答案 0 :(得分:33)

Facebook取消了用户名,因为用户名是通过Facebook发送电子邮件的一种方式。

例如,给定网址http://www.facebook.com/sebastian.trug

相应的Facebook电子邮件将是sebastian.trug@facebook.com

如果通过电子邮件发送,将直接收到messages {如果message设置为public),否则收到other收件箱。

答案 1 :(得分:23)

User对象的username字段已被删除,并且在Graph API v2.0中不存在。在API的v2.0中,无法获取用户的FB用户名。

来源:https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api

  

“/ me / username不再可用。”

答案 2 :(得分:20)

@Simon Cross - 它被弃用了,是的。这不是问题,问题是如何获得它 - 并且 - 更进一步 - 我想知道为什么Facebook做出了如此可怕的选择并删除了用户名。数百个依赖用户名在其服务上创建帐户的应用程序将被破坏。

@ user3596238 - 您可以坚持使用将持续到2015年4月底的V.1 API,到目前为止还不是最好的解决方案,但到目前为止Facebook可能无关紧要。 https://developers.facebook.com/docs/apps/changelog

解决方案:除了实际的Facebook登录信息外,还要求用户输入用户名? - 在我看来,无论如何,这使得Facebook登录毫无意义。

答案 3 :(得分:6)

虽然2.0 SDK不再提供username字段,但如果您拥有用户ID号(您可能会用它来访问图表),则很容易被删除。

网址facebook.com/<user id>会重定向到facebook.com/<username>,然后可以随意提取。

答案 4 :(得分:5)

我的方法是使用nokogiri通过用户个人资料删除用户名。 有点像(在红宝石中):

html = RestClient.get("http://facebook.com/123123xxx)
doc = Nokogiri::HTML(html)
username = doc.css('head meta')[1].attributes["content"].value

答案 5 :(得分:2)

其中一种方法是使用cURL访问facebook.com/{userid},然后按照重定向进行操作。

该页面重定向到facebook.com/{username}

答案 6 :(得分:-3)

受到@RifkiFauzi answer的启发,这是我的纯Python解决方案

#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)

答案 7 :(得分:-6)

https://graph.facebook.com/?id=100005908663675

只需将id更改为任何内容。