" 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获取这些数据,或者是"用户名"现在被视为已弃用的字段?
答案 0 :(得分:33)
例如,给定网址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更改为任何内容。