Facebook graph api 通过Facebook API,我可以在给定用户名的情况下计算出用户的用户id吗?

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中检索用户名的可能性。所以,让我们假设我做得非常笨拙,并要求用户提

长话短说:如果一个用户说他们的用户名是“flyrev”,我如何验证这一点

我正在创建一个数据库,通过用户名存储到Facebook个人资料的链接,这样我就可以很容易地说Facebook.com/username

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

然而,Facebook已经取消了从API中检索用户名的可能性。所以,让我们假设我做得非常笨拙,并要求用户提供他们的Facebook个人资料链接(这对用户来说可能很奇怪,但让我们假装我侥幸成功)


如果登录用户给了我他们的用户名,我可以将其与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。