现在我该怎样在Facebook的PHP SDK 3.0.0认证?(Now how do I auth

2019-09-28 18:36发布

所以,Facebook已经改变了认证过程。 再次。 在PHP SDK的例子是:

$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

但是,现在我们如何鉴别谁尚未验证的用户? 难道我们只是创造一个else语句和结果的调用$facebook->getLoginUrl()

另外,上面的例子给我一个错误的调用$facebook->getUser()返回我的用户ID,但后来我的应用程序时,试图调用翻倒$facebook->api('/me')给出错误:

致命错误:未捕获OAuthException:活动的访问令牌必须用于查询当前用户的信息。 抛出/home/woohoobi/public_html/facebookv2/inc/facebook.php上线560

有关如何在未验证用户身份验证的任何帮助将是巨大的。

Answer 1:

当你做

$user = $facebook->getUser();

$user不为空并不意味着你有一个有效的访问令牌,使一些API调用。 它只是意味着该用户登录。

要检查是否有一个活跃的访问令牌,一个办法就是尽量让API调用,当你在你的问题写的代码:

require "facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET,
));

$user = $facebook->getUser();

if ($user) {
  // The user is logged in
  try {
    $user_profile = $facebook->api('/me');
    // Here : API call succeeded, you have a valid access token
  } catch (FacebookApiException $e) {
    // Here : API call failed, you don't have a valid access token
    // you have to send him to $facebook->getLoginUrl()
    $user = null;
  }
} // else : the user is not logged in

所以,你有2个情况下,您需要将您的用户发送到$facebook->getLoginUrl()并在这两种情况下,我们做了$user == null 。 所以,我们只需要添加:

<?php if ($user): ?>
    <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
    <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>

有关完整的流程,你可以看到Facebook的PHP SDK的例子这是有据可查的。

希望帮助。



Answer 2:

这帮助我..很多! 所以..用户只需要再先接受您的应用程序使用用户数据。

<body>
<?php

  if (!$user_id)
    echo("<script> top.location.href='" . $facebook->getLoginUrl() . "'</script>");

?>


Answer 3:

我在用的getUser()调用返回0。有一天,它正在同一个问题,接下来的事实并非如此。 我没有意识到的是,PHP SDK旨在与JS SDK一起使用。 您应该遵循这些步骤: https://developers.facebook.com/docs/reference/javascript/ -包括之后的配置,你应该进行排序。



文章来源: Now how do I authenticate in Facebook's PHP SDK 3.0.0?