0

我使用Yii作为框架,但我认为这不会成为问题。Facebook给我两个不同的acces令牌,PHP SDK

此时我使用PHP SDK从用户获取帐户信息,这在我的用户首次登录时工作正常。但1或2小时后,访问令牌过期,我得到一个错误(这并不奇怪)。

但是,这里是我陷入困境,我可以想到2个解决方案,但我都不知道如何去做。首先让我介绍我的一些代码:

要登录到我的应用程序的用户被发送到FacebookLogin()行动:

public function actionFacebookLogin() 
{ 
    $my_url = 'http://***.***.nl/app/facebook-popup.php'; 
    $permissions = 'read_insights, publish_actions, manage_pages, email'; 
    $loginUrl = Yii::app()->facebook->getLoginUrl(array('scope' => $permissions, 'display' => 'popup', 'redirect_uri' => $my_url)); 
    echo '<script> window.location="'.$loginUrl.'"</script>'; 
} 

用户授予适当的权限后,用户发送到Login()行动:

public function actionLogin() { 
    $facebookID = Yii::app()->facebook->getUser(); 
    $accessToken = Yii::app()->facebook->getAccessToken(); 
} 

(登录操作的其余部分并不重要。)

现在,在这一点上,->getAccessToken()乐趣ction给了我一个适当的access_token,并且使用寿命很短。这样可以,除非用户在我的页面上使用1或2个小时以上,“现在有些奇怪的东西*之后,用户必须注销并重新登录。然后,我仍然收到错误信息,除非大约10分钟后,我收到新的access_token这也给予了我所需要的权限。

所以解决这个我想到了2个解决方案,我无法找到使用这种正确的做法。

首先,最简单的一个。 当我去到Graph API Explorer和使用access_token我的应用程序给我我得到的信息,但是当我尝试调试access_token它显示access_token有一个期待日期但是当我使用相同的Graph API Explorer并让它自己生成一个access_token我得到了一个access_token根本不会过期。

作为询问的更新我的handlings与Graph API Explorer 我去API浏览器和如何更改应用到我的web应用程序。然后它得到一个正常的access_token自动填充。当我按“调试”按钮它说,这access_token有一个期待日期。当我然后回到资源管理器并按下“获取访问令牌”按钮时,它给了我另一个。当我再次按下“调试”按钮时,它表示这个access_token没有期待日期。如果我可以使用这个,那将会很棒。

所以我的第一个解决方案是获取最后的access_token(如果可能)并将其存储在我的数据库中。然后在需要时使用Facebook PHP SDK ->setAccessToken()函数。但是怎么样?我没有线索!

我想到的第二个解决方案。 我也可以做一个init()函数,如果我们得到一个有效的access_token,并且如果没有得到一个新的或者刷新当前的过期的,就会检查每一个动作。这将有更多的服务器负载,然后第一个解决方案,并与第一个解决方案相同,我不知道如何实现这一点。

我认为主要问题是我发现Facebook文档有点难以理解,我不知道从哪里开始。

任何输入将非常appriciated!

+0

本段“首先最简单的一个......”令人困惑。显然有两个不同的电话在这里工作。您需要在图表资源管理器中明确说明您为每项操作做了什么。 – phwd 2013-02-12 12:16:04

+0

编辑我的帖子,感谢您的反馈。希望这已经够清楚了。 – Augus 2013-02-12 12:37:32

回答

0

您可以延长访问令牌的到期时间,如下所述:https://developers.facebook.com/roadmap/offline-access-removal/

或者你也可以嵌入JS SDK,它在每一页上的通话将获得一个新的短暂访问令牌,如果前一已过期。 (并通过cookie与PHP SDK共享。)

+0

如果我嵌入JS SDK它自动更新访问令牌还是我需要以某种方式调用它? – Augus 2013-02-13 10:39:50

相关问题