使用PHP-SDK进行Facebook身份验证

Mo *_*abi 4 php facebook oauth

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

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

以下是使用代码示例的上一个问题的链接..

Facebook OAuth根据存储的会话检索信息

请指教?

Que*_*tin 7

更新:脱机访问现在已弃用.改用别的东西.


如果您想要在用户退出应用程序后使用该用户的访问令牌,则必须要求获得该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;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果他不是,您生成"登录Facebook"URL请求offline_access权限:

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

然后在模板中显示链接:

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

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

if ($user) {
    $token = $facebook->getAccessToken();
    // store token
}
Run Code Online (Sandbox Code Playgroud)

使用脱机访问令牌

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

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

$facebook->setAccessToken("...");
Run Code Online (Sandbox Code Playgroud)

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

$user_profile = $facebook->api('/me');
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!

  • 脱机访问我现在已弃用:https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token (2认同)