如何从Facebook ID获取用户名

时间:2014-10-30 00:28:04

标签: php facebook facebook-graph-api

在互联网上有一些关于这个问题的主题,但我没有找到任何复杂的解决方案。因此,我想请你帮忙。

我需要将facebook ID更改为用户名。

当您输入这样的网站时:

http://facebook.com/profile.php?id=4(num 4是FB id),它会给你http://www.facebook.com/zuck,这是Mark Zuckerberg的个人资料。

根据这个原则,我需要找出id是谁。

我输入了ID 4,但它是zuck

但我需要更多的ID,所以手动需要花费很多时间。请帮帮我,我怎么做。

3 个答案:

答案 0 :(得分:3)

如果您已拥有该特定用户的ID,则只需将其添加到此网址:

https://graph.facebook.com/<USER_ID>

简单示例:

function get_basic_info($id) {
    $url = 'https://graph.facebook.com/' . $id;
    $info = json_decode(file_get_contents($url), true);
    return $info;
}

$id = 4;
$user = get_basic_info($id);
echo '<pre>';
print_r($user);

这基本上应该产生:

Array
(
    [id] => 4
    [first_name] => Mark
    [gender] => male
    [last_name] => Zuckerberg
    [link] => https://www.facebook.com/zuck
    [locale] => en_US
    [name] => Mark Zuckerberg
    [username] => zuck
)

然后你可以像普通数组一样调用它:

echo $user['username'];

旁注:为什么不使用PHP SDK。

https://developers.facebook.com/docs/reference/php/4.0.0

答案 1 :(得分:2)

由于所讨论的here中的图谱API端点/user-id的用户名不再可用,我建议另一种解决方法(但使用Python代码)

简而言之,我们在 fb.com/USER_ID 打开页面并从中抓取用户名

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

答案 2 :(得分:0)

截至2019年10月,唯一可行的方法是在请求和权限中请求user_links

enter image description here

然后将其传递给类似这样的范围

scope: ['user_link']