gpt4 book ai didi

php - 我可以存储 Facebook 访问 token 并在以后使用吗?

转载 作者:可可西里 更新时间:2023-10-31 22:18:47 26 4
gpt4 key购买 nike

我正在构建一个使用 FB 连接的网络应用程序 (PHP)。我在 facebook 提供的 PHP 库的帮助下成功注册/登录用户。我也可以使用此代码发布到墙上

        Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;
$facebook = new Facebook(array(
'appId' => $fb_key,
'secret' => $fb_secret,
'cookie' => true, // enable optional cookie support
));
$session = $facebook->getSession();
if ($session)
{
$facebook->api('/me/feed', 'POST', array('message'=>$message, 'link'=>$link['href'], 'name'=>$link['text']));
}

但是,如果我手动转到浏览器的 cookie 管理器并删除存储 FB session 的 cookie,代码将不起作用。我唯一拥有的是我存储在数据库中的用户 FB ID。即使 FB session 丢失,是否有任何方法可以发布到用户的墙上?将用户的 FB 访问 token 存储在数据库中以便稍后发布到墙上是否有意义,或者访问 token 是否相对短暂?

这是我的应用中可能发生的示例情况:用户点击 fb 按钮,授权我的应用程序,被重定向回我的网站,我会根据 FB 提供的数据自动创建一个帐户,我还会存储用户的 FB ID,以便以后可以登录该用户。现在他浏览网站,输入一些信息,这些信息就会发布到他的墙上。到目前为止一切都很好,因为用户的浏览器保存着 FB 创建的 cookie。现在用户离开站点并联系站点管理员。管理员打开他自己的浏览器,进入管理界面并代表该用户发布一些内容。现在,有了该用户的 FB ID 并假设该用户没有撤​​销权限,我还能将其发布到他的墙上吗?

最佳答案

借助 Facebook PHP SDK v3 ( see on github ),询问和使用用户离线访问 token 非常简单。以下是您的操作方法。

获取离线访问 token

首先检查用户是否登录:

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 ?>

然后,当用户登录时,您可以检索离线访问 token 并存储它。要获取它,请调用:

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

使用离线访问 token

在用户未登录时使用离线访问 token :

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

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

现在您可以为该用户调用 API 了:

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

希望对您有所帮助!

关于php - 我可以存储 Facebook 访问 token 并在以后使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com