Facebook graph api 通过Facebook API,我可以在给定用户名的情况下计算出用户的用户id吗?
长话短说:如果一个用户说他们的用户名是“flyrev”,我如何验证这一点 我正在创建一个数据库,通过用户名存储到Facebook个人资料的链接,这样我就可以很容易地说Facebook.com/username 为了方便起见,我想我可以使用一个简单的Facebook登录按钮,然后在他们登录后,如果他们单击“添加我”,我可以简单地将Facebook.com/that_user_id添加到列表中 然而,Facebook已经取消了从API中检索用户名的可能性。所以,让我们假设我做得非常笨拙,并要求用户提供他们的Facebook个人资料链接(这对用户来说可能很奇怪,但让我们假装我侥幸成功)Facebook graph api 通过Facebook API,我可以在给定用户名的情况下计算出用户的用户id吗?,facebook-graph-api,Facebook Graph Api,长话短说:如果一个用户说他们的用户名是“flyrev”,我如何验证这一点 我正在创建一个数据库,通过用户名存储到Facebook个人资料的链接,这样我就可以很容易地说Facebook.com/username 为了方便起见,我想我可以使用一个简单的Facebook登录按钮,然后在他们登录后,如果他们单击“添加我”,我可以简单地将Facebook.com/that_user_id添加到列表中 然而,Facebook已经取消了从API中检索用户名的可能性。所以,让我们假设我做得非常笨拙,并要求用户提
如果登录用户给了我他们的用户名,我可以将其与ID进行匹配以确保他们提供了正确的用户名吗?由于Facebook API已更新,我编写此函数是为了检查用户的ID。虽然它不使用API,但我希望它能帮助您
<?php
function getUserId($username) {
// Validate username
if (preg_match('/[0-9.]{3,50}/', $username)) {
$options = array(
CURLOPT_URL => 'https://www.facebook.com/' . $username,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_ENCODING => '',
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36',
CURLOPT_AUTOREFERER => TRUE,
CURLOPT_CONNECTTIMEOUT => 15,
CURLOPT_TIMEOUT => 15,
CURLOPT_MAXREDIRS => 3,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_SSL_VERIFYPEER => 0
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
unset($options);
// Get ID from the response
if ($http_code === 200 && strpos($response, '"entity_id"') !== FALSE) {
if (preg_match('/"entity_id":"([0-9]+?)"/', $response, $regs)) {
return $regs[1];
}
}
}
return NULL;
}
抓取Facebook是违反他们的ToS的。另外,当他们发现您正在这样做时,您可以很容易地阻止服务器的IP地址。这根本不是一个推荐的解决方案。@CBroe谢谢您提供的信息!这个问题很清楚地说明了我想通过API实现这一点。你不需要他们的用户名就能链接到他们的个人资料。只需让他们登录到你的应用程序,然后请求用户对象的链接
属性,这将为你提供一个重定向到正确配置文件地址的URL。