繁体   English   中英

使用PHP-SDK的Facebook身份验证

[英]Facebook Authentication using PHP-SDK

我已经尝试了好几天没有运气了,我设法使用了PHP-SDK附带的example.php,并且运行良好。 我只需要存储返回的会话并在以后使用它,这样我就可以访问而无需重新验证。

我尝试将会话存储在数据库的序列化字段中,然后还原数据,将其反序列化,然后在php-sdk中使用setSession函数检索身份验证。 不幸的是,那没有用,

这是代码示例的上一个问题的链接。

Facebook OAuth基于存储的会话检索信息

请指教?

更新: 现在不赞成使用脱机访问。 改用其他东西。


如果即使在用户退出应用程序后仍要使用该用户的访问令牌,则必须请求offline_access权限。

使用Facebook PHP SDK v3( 请参阅github ),这非常简单。 要记录具有offline_access权限的人,请在生成登录URL时询问。 这是您的操作方式。

获取离线访问令牌

首先,您检查用户是否登录:

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

$user = $facebook->getUser();

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

如果他不是,则生成“使用Facebook登录” URL,以请求offline_access权限:

if (!$user) {
    $args['scope'] = 'offline_access';
    $loginUrl = $facebook->getLoginUrl($args);
}

然后在模板中显示链接:

<?php if (!$user): ?>
    <a href="<?php echo $loginUrl ?>">Login with Facebook</a>
<?php endif ?>

然后,您可以检索脱机访问令牌并将其存储。 要获取它,请致电:

if ($user) {
    $token = $facebook->getAccessToken();
    // store token
}

使用离线访问令牌

要在用户未登录时使用脱机访问令牌:

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

$facebook->setAccessToken("...");

现在,您可以为此用户进行API调用:

$user_profile = $facebook->api('/me');

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM