【发布时间】:2013-07-14 08:38:10
【问题描述】:
我在使用 PHP SDK oauth to Facebook 时遇到了一些奇怪的行为。在 Firefox 中,我能够登录并允许该应用程序。我被重定向到我正在输出我的用户 ID、用户信息等的测试页面。漂亮!
接下来,我打开 Chrome 或 IE 或 Safari,登录 Facebook 后,我被重定向到同一页面,但这一次,我没有显示为已登录。没有用户 ID,我可以验证我已登录 Facebook。
事情变得更奇怪了。我在 Firefox 注销时回到 Facebook,回到我的测试脚本,它仍然显示我已登录.. 即使我通过 LogOutURL 完全注销。发出 $facebook->destroySession(); 后终于显示我正确退出了..现在我无法使用任何浏览器登录。
我已验证我有正确的访问令牌,并注意到登录 URL 中的“状态”变量会随着测试页面上的每次页面刷新而不断变化。
有什么想法吗?
这是我的测试代码.. 显然 appid 和 secret 已被删除。应用程序已创建,看起来可以通过 Facebook 运行...就像我说的,它运行过一次。
<?
require_once("facebook.php");
$config = array();
$config['appId'] = 'blahblahblah';
$config['secret'] = 'blahblahblah';
$config['canvas'] = false;
$config['fbconnect'] = true;
$facebook = new Facebook($config);
var_dump($facebook);
echo '<br /><br />';
echo 'Access Token<br />';
var_dump($facebook->getAccessToken());
echo '<br /><br />';
echo 'Login Status URL<br />';
var_dump($facebook->getLoginStatusUrl());
echo '<br /><br />';
$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl();
echo 'login URL: '.$loginUrl;
echo '<br />';
$logoutUrl = $facebook->getLogoutUrl();
echo 'logout URL: '.$logoutUrl;
echo '<br />';
$user = $facebook->getUser();
echo var_dump($user);
echo '<br />';
$user = $facebook->api('/me');
var_dump($user);
//$facebook->destroySession();
?>
【问题讨论】:
-
我讨厌 facebook 的 API。就这些。祝你好运。我希望你能解决它。我会期待的。
-
使用 try/catch 块抛出任何 Facebook API 错误。浏览器控制台或 PHP error_log 中很可能出现错误
-
完全没有错误,UserID 只是返回为 int(0)。我尝试了尝试/捕获。 $facebook->getUser() 只是返回 0。我已 100% 登录,我没有通过 getLoginUrl() 发送登录