长话短说:如果用户说他们的用户名是“flyrev”,我该如何验证是否属实?
我正在创建一个数据库,用于存储指向的Facebook个人资料的链接,以便我可以轻松地说facebook.com/username。
为方便起见,我想我可以使用一个简单的Facebook登录按钮,然后在他们登录后我可以简单地将facebook.com/that_user_id添加到列表中,如果他们点击“添加我”。
然而,Facebook已经取消了从API检索用户名的可能性。所以,假设我真的很尴尬,并且询问用户的Facebook个人资料链接(这对用户来说可能看起来很奇怪,但是让我假装我已经明白了它的用户体验)。
鉴于登录用户为我提供了用户名,我可以将其与ID匹配,以确保他们提供了正确的用户名吗?
答案 0 :(得分:0)
自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;
}
例如: