我正在使用FB.login在我的网站上登录Facebook,但它确实有效。
我可以轻松地使用response.AuthResponse.accessToken获取accessToken。
会话有效期为2小时。我从我读到的内容中了解到,使用fb_exchange_token,你可以将它延长到30天或60天(我不确定哪个,我看到了两个数字)。
问题1:这在Javascript中是否可行?我是否需要提供应用程序机密(我不想在Javascript中执行此操作,因为每个人都可以访问它)?有人可以提供一个代码片段吗?
我的计划是使用ajax将新获得的扩展令牌发送到PHP,然后将其用于我正在进行的PHP FQL调用。目前我在做:
$facebook = new Facebook(array('appId' => $app_id,'secret' => $app_secret));
$fql = 'SELECT first_name, last_name, movies, tv, FROM user WHERE uid =' . $uid;
$param = array('method' => 'fql.query','query' => $fql,'callback' => '');
$fqlResult = $facebook->api($param);
问题2:这可能是一个新手问题,但如何在上面的PHP代码中使用ajax发送的新访问令牌?目前,我没有明确使用访问令牌,一切正常(直到2小时到期)。
先谢谢你的帮助,
吉斯
答案 0 :(得分:1)
当您从Facebook访问令牌时,您应该将其发送回服务器,然后您可以将其扩展到那里,而不必担心暴露您的应用密钥和秘密。
在服务器上拥有访问令牌后,您可以使用以下方法将其添加到Facebook库中。
$facebook->setAccessToken($access_token)
您所做的任何api调用都将以登录用户身份执行。