我使用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!
本段“首先最简单的一个......”令人困惑。显然有两个不同的电话在这里工作。您需要在图表资源管理器中明确说明您为每项操作做了什么。 – phwd 2013-02-12 12:16:04
编辑我的帖子,感谢您的反馈。希望这已经够清楚了。 – Augus 2013-02-12 12:37:32