首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook PHP访问令牌随机过期,如何无缝刷新而不需要加载时间

Facebook PHP访问令牌随机过期,如何无缝刷新而不需要加载时间
EN

Stack Overflow用户
提问于 2013-01-04 21:03:44
回答 1查看 1.1K关注 0票数 1

我在我的网站上使用PHP。我已经开发了一个登记表和登录表格。

生成facebook登录链接,用户单击并授权应用程序。它们被重定向到我的站点并拥有访问令牌。

我可以使用API调用,比如$this->facebook->api('/me/');我将调用放在try语句中并捕获任何异常。

它工作得很完美。

问题是,随机地,我的访问令牌将过期,因此api无法全部完成,异常将被捕获。我不知道这是为什么,但我想做的是无缝刷新访问令牌。也就是说,获得一个新的,并继续在网站上的用户会话无缝。

因此,我所做的是将它们保存在会话中,将用户重定向到catch语句中的facebook登录页面,然后成功地重新记录用户重定向回原来的位置。

这是可行的,但有一个问题。有这种情况:

代码语言:javascript
复制
            try
        {
            $me = $CI->facebook->api('/me');
        }
            catch(FacebookApiException $e) 
        {               
    //redirect to fb login lin
        }

在每个页面上,每个页面的页面加载时间实际上是站点上每个页面的两倍-- Facebook本身就是慢的。

而不是1秒的页面加载,他们是2-3秒.我给它做了标杆,正因为如此.

我能做什么?HOw我可以为授权用户维护/刷新一个访问密钥,而不需要为我的用户花费大量的负载时间?

EN

回答 1

Stack Overflow用户

发布于 2013-01-06 17:17:27

编辑:我建议的解决方案是使用PHP2.0直接调用身份验证,对其余的Facebook调用使用PHP。

  1. 最初通过遵循来自access_token的步骤获得Facebook开发人员文档
  2. 在第6步,您将有一个更长的有效期为90天的access_token
  3. 现在,一旦获得了扩展的access_token,就可以通过调用Facebook::setAccessToken使PHP使用相同的
  4. Facebook对象存储在$_SESSION中,以便从其他页面进行api调用。

此外,您还可以继续将扩展的access_token持久保存(在数据库中)。这将完全消除Facebook用于登录进程的通信。但是,请确保您已经采取了必要的安全防范措施来安全保护access_token(出于明显的原因),并且您的隐私策略也是如此。

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

https://stackoverflow.com/questions/14164938

复制
相关文章

相似问题

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