【发布时间】:2009-10-15 18:22:47
【问题描述】:
我正在做我的第二个 Facebook 连接网站。在我的第一个站点上,我使用 facebook coonect FBML 登录用户,然后我可以通过 PHP 客户端访问其他信息。对于这个站点,使用相同的确切代码,它似乎不起作用。我希望有人能够使用 Facebook 按钮登录:
<fb:login-button length="long" size="medium" onlogin="facebook_onlogin();"></fb:login-button>
在他们登录后,facebook_onlogin() 函数向试图使用 Facebook PHP 客户端的 PHP 页面发出一些 AJAX 请求。这是该页面的代码:
$facebook = new Facebook('xxxxx API KEY xxxxx', 'xxxxx SECRET KEY xxxxx');
//$facebook->require_login(); ** I DONT WANT THIS LINE!!
$userID = $facebook->api_client->users_getLoggedInUser();
if($userID) {
$user_details = $facebook->api_client->users_getInfo($userID, 'last_name, first_name');
$firstName = $user_details[0]['first_name'];
$lastName = $user_details[0]['last_name'];
$this->view->userID = $userID;
$this->view->firstName = $firstName;
$this->view->lastName = $lastName;
}
问题是 PHP 客户端认为我没有会话密钥,因此 $userID 永远不会设置。如果我用我的 facebook ID(我登录时使用的)覆盖 $userID,我会收到此错误:
异常 'FacebookRestClientException' 在 C:\wamp\www\mab\application\Facebook\facebookapi_php5_restlib.php:3003 中带有消息“调用此方法需要会话密钥”
如果我取消注释 require_login(),它将获得一个会话 ID,但它会重定向很多页面并中断我的 AJAX 调用。我正在使用与在另一个站点上成功执行此操作的代码相同的代码。任何人都知道为什么在用户使用连接按钮登录后 PHP 客户端不知道会话 ID?任何想法将不胜感激。谢谢!
【问题讨论】: