使用 PHP-SDK 的 Facebook 身份验证

2024-04-13

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

我尝试将会话存储在数据库中的序列化字段中,然后恢复数据、反序列化并使用 php-sdk 中的 setSession 函数来检索身份验证。不幸的是,这并没有奏效,

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

Facebook OAuth 根据存储的会话检索信息 https://stackoverflow.com/questions/3742137/facebook-oauth-retrieve-information-based-on-stored-session

请指教?


Update:离线访问现已弃用 https://developers.facebook.com/roadmap/offline-access-removal/。使用其他东西代替。


如果您想在用户退出您的应用程序后仍使用该用户的访问令牌,则必须请求offline_access允许。

使用 Facebook PHP SDK v3 (见github上 https://github.com/facebook/php-sdk),这很简单。登录某人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');

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP-SDK 的 Facebook 身份验证 的相关文章

随机推荐