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');
希望有帮助!