我在我的网站上使用PHP SDK。我已经开发了注册表和登录表。
生成facebook登录链接,用户点击并授权该应用。它们被重定向到我的站点并具有访问令牌。
我可以使用API调用,例如$ this-> facebook-> api('/ me /'); 我将调用置于try语句中并捕获任何异常。
效果很好。
问题是随机我的访问令牌将会过期,因此api都无法完成并且异常被捕获。我不知道为什么会这样,但我想做的是无缝刷新访问令牌...即获得一个新的并继续无缝地在网站上进行用户会话。
我这样做是将它们的位置保存在会话中,将用户重定向到catch语句中的facebook登录页面,然后成功重新登录用户重定向回原来的位置。
这有效,但有一个问题。 有这个:
try
{
$me = $CI->facebook->api('/me');
}
catch(FacebookApiException $e)
{
//redirect to fb login lin
}
每页上的基本上会使网站上每个页面的页面加载时间加倍 - Facebook PHP SDK本身就很慢。
而不是1秒的页面加载,它们需要2-3秒。我对它进行了基准测试,这是因为这个尝试/捕获..
我该怎么办?我可以维护/刷新授权用户的访问密钥,而不会给我的用户带来巨大的加载时间成本吗?
答案 0 :(得分:2)
编辑:我建议的解决方案使用直接 OAuth 2.0 调用使用PHP进行身份验证,然后使用PHP SDK进行其余的Facebook API调用。
access_token
。 access_token
有效期为90天。 access_token
,您可以通过调用Facebook::setAccessToken Facebook
对象存储在$_SESSION
中,以便从其他页面进行api调用。此外,您可以继续保存此扩展access_token
(在数据库中)。这将完全消除用于登录过程的Facebook通信。但请确保您已采取必要的安全预防措施来保护access_token
(由于显而易见的原因),并且您的隐私政策也相同。