在互联网上有一些关于这个问题的主题,但我没有找到任何复杂的解决方案。因此,我想请你帮忙。
我需要将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,所以手动需要花费很多时间。请帮帮我,我怎么做。
答案 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。
答案 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)