1

我正在使用 Facebook API,但它正在做奇怪的事情 - 我有两个问题:

  1. 当我使用 getLoginUrl(...) - 我从来没有得到一个弹出窗口 - 我没有点击任何东西,它只是重定向。
  2. 使用我的 FB 帐户,此代码重定向,我看到“用户”和“令牌”,但是当我在同事的 FB 帐户上尝试相同的操作时,它会给出错误“发生错误。请稍后再试”。

这是我的重定向器代码:

require_once '../../src/facebook.php';

define('FACEBOOK_APP_ID',"xxx");
define('FACEBOOK_SECRET',"xxxxx");
define('REDIRECT_URI',"http://dev.example.com.au/php/work/redirectSimple.php");

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET,
    'cookie' => true
));

$user = $facebook->getUser();
if($user == 0) 
{
    $login_url = $facebook->getLoginUrl($params = array('redirect_uri' => REDIRECT_URI));
    echo ("<script> top.location.href='".$login_url."'</script>");
}
else
{
    echo ("<script> window.location.href='".REDIRECT_URI."'</script>");
}

我的重定向代码(redirectSimple.php):

echo "\n WELCOME!";

require_once '../../src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => "xxx",
  'secret' => "xxxxx",
  'fileUpload' => true,
  'cookie' => true
));

$user = $facebook->getUser();
echo "\n user = ".$user;

$token = $facebook->getAccessToken();
echo "\n token = ".$token;

我也在另一台机器上尝试过这些东西,结果相同。那么,也许是帐户或应用程序设置问题?

4

2 回答 2

3

首先,除非您使用 Ajax,否则不要使用 PHP 寻找弹出窗口,因为 PHP 不做弹出窗口,是服务器端。如果您想要弹出窗口,您需要使用 JavaScript SDK。

其次,成功登录后,您将重定向到另一个文件。就我个人而言,我会使用 require_once 而不是重定向,因为您已经创建了一个 Facebook 对象,如果您重定向,则必须重新创建它。

如果你将它与“try”和“catch”结合起来,你可以捕获任何 Facebook 错误,这会给你一个关于正在发生的事情的线索。

除此之外,正如其他人所说,在应用设置中检查您是否处于沙盒模式。

于 2012-12-12T07:33:02.840 回答
1
  1. 这里没有创建“弹出窗口”的代码 -getLoginUrl()创建一个可以用作服务器端流程的一部分的 url - 你需要重定向到这个 url。
  2. 您的同事很可能不是您的应用程序的开发人员或测试人员,因此看不到它(它可能处于沙盒模式)
于 2012-12-12T06:45:07.220 回答