使用Facebook API,我可以根据用户名找出用户的用户ID吗?

时间:2016-07-20 22:04:14

标签: facebook-graph-api

长话短说:如果用户说他们的用户名是“flyrev”,我该如何验证是否属实?

我正在创建一个数据库,用于存储指向的Facebook个人资料的链接,以便我可以轻松地说facebook.com/username。

为方便起见,我想我可以使用一个简单的Facebook登录按钮,然后在他们登录后我可以简单地将facebook.com/that_user_id添加到列表中,如果他们点击“添加我”。

然而,Facebook已经取消了从API检索用户名的可能性。所以,假设我真的很尴尬,并且询问用户的Facebook个人资料链接(这对用户来说可能看起来很奇怪,但是让我假装我已经明白了它的用户体验)。

鉴于登录用户为我提供了用户名,我可以将其与ID匹配,以确保他们提供了正确的用户名吗?

1 个答案:

答案 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;
}

例如:

Get user ID from username