首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以存储Facebook访问令牌并在以后使用它吗?

问我可以存储Facebook访问令牌并在以后使用它吗?
EN

Stack Overflow用户
提问于 2011-01-06 04:11:26
回答 2查看 13.3K关注 0票数 10

我正在建立一个网络应用程序(PHP),使用FB连接。在facebook提供的PHP库的帮助下,我成功地注册/登录了用户。我还可以使用下面的代码发布到wall

代码语言:javascript
复制
        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会话的cookie,代码将无法工作。我唯一有的是用户的FB ID,我存储在数据库中。有没有办法在FB会话丢失的情况下发布到用户的墙上?将用户的FB访问令牌存储在数据库中以便稍后发布到wall中是否有意义,或者访问令牌是否相对短暂?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-06 04:14:32

UPDATE:此答案不再有效,因为offline_access已弃用。

您需要申请offline_access权限。检查permissions文档。

编辑的每一个更新和评论-关于删除offline_access的一些信息可以在here中找到。

票数 8
EN

Stack Overflow用户

发布于 2011-05-28 12:02:38

使用Facebook PHP SDK v3 (see on github),询问和使用用户离线访问令牌非常简单。下面是你如何做到这一点的。

获取脱机访问令牌

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

代码语言:javascript
复制
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”的网址,请求offline_access权限:

代码语言:javascript
复制
if (!$user) {
    $args['scope'] = 'offline_access';
    $loginUrl = $facebook->getLoginUrl($args);
}

然后在模板中显示链接:

代码语言:javascript
复制
<?php if (!$user): ?>
    <a href="<?php echo $loginUrl ?>">Login with Facebook</a>
<?php endif ?>

然后,当用户登录时,您可以检索并存储脱机访问令牌。要获取它,请调用:

代码语言:javascript
复制
if ($user) {
    $token = $facebook->getAccessToken();
    // store token
}

使用脱机访问令牌

要在用户未登录时使用离线访问令牌,请执行以下操作:

代码语言:javascript
复制
require "facebook.php";
$facebook = new Facebook(array(
  'appId'  => YOUR_APP_ID,
  'secret' => YOUR_APP_SECRET,
));

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

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

代码语言:javascript
复制
$user_profile = $facebook->api('/me');

希望这能有所帮助!

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4608713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档