Facebook连接'下一个'错误

时间:2010-04-26 03:02:35

标签: php javascript facebook

我正在尝试使用新的facebook身份验证系统,但我无法让登录工作。

我收到以下错误消息:


API错误代码:100

API错误说明:参数无效

错误消息:next不归应用程序所有。


发送到Facebook的网址是:

http://www.facebook.com/connect/uiserver.php?app_id=444444444444444&next=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%23%3F%3D%26cb%3Df357eceb0361a8a%26origin%3Dhttp%253A%252F%252Fwww.mysite.com%252Ff38fea4f9ea573%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df23b800f8a78%26result%3DxxRESULTTOKENxx&display=popup&channel=http%3A%2F%2Fwww.mysite.com%2Ffbtester.php&cancel=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%23%3F%3D%26cb%3Df6095a98598be8%26origin%3Dhttp%253A%252F%252Fwww.mysite.com%252Ff38fea4f9ea573%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df23b800f8a78%26result%3DxxRESULTTOKENxx&locale=en_US&return_session=1&session_version=3&fbconnect=1&canvas=0&legacy_return=1&method=permissions.request

请注意,网址中的“下一个”变量是:

下一个HTTP =%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%23%3F%3D%26CB%3Df357eceb0361a8a%26origin%3Dhttp%253A%252F%252Fwww.mysite.com%252Ff38fea4f9ea573 %26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df23b800f8a78%26result%3DxxRESULTTOKENxx


任何想法可能会出错?我所做的就是从facebook的网站上复制并粘贴facebook登录演示代码:


 <?php
define('FACEBOOK_APP_ID', 'your application id');
define('FACEBOOK_SECRET', 'your application secret');

function get_facebook_cookie($app_id, $application_secret) {
  $args = array();
  parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
  ksort($args);
  $payload = '';
  foreach ($args as $key => $value) {
    if ($key != 'sig') {
      $payload .= $key . '=' . $value;
    }
  }
  if (md5($payload . $application_secret) != $args['sig']) {
    return null;
  }
  return $args;
}

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);

?>


<!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <?php if ($cookie) { ?>
      Your user ID is <?= $cookie['uid'] ?>
    <?php } else { ?>
      <fb:login-button></fb:login-button>
    <?php } ?>

    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
      FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
               cookie: true, xfbml: true});
      FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
      });
    </script>
  </body>
 </html>

感谢您的帮助!

5 个答案:

答案 0 :(得分:5)

我遇到了同样的错误,但我使用的是Rails,问题是Connect URL没有更新。我的本地应用程序在端口3000上运行,Connect URL指向端口80。

查看更改是否适合您。

  1. 转到http://www.facebook.com/developers
  2. 编辑您正在使用的应用程序
  3. 点击左侧的Connect标签
  4. 验证Connect URL是否设置正确

答案 1 :(得分:1)

我对Facebook API了解不多,但我知道你必须用您的应用程序ID和应用程序密码替换文本your application idyour application secret。 :)

答案 2 :(得分:1)

我遇到了同样的问题,无法弄明白。吉说,这是基础领域。我会投票,但我刚加入。 FB设置页面中的要求非常糟糕......我使用了localhost。

我还使用了一个查询字符串?nothing = 1来测试新要求的b / c,它说: connect url必须指向一个目录(即以“/”结束)或动态页面(即在某处有一个“?”。

因此,您不能只使用default.aspx。你必须以斜线结束或拥有?这是连接的奇怪要求。

谢谢你!

答案 3 :(得分:1)

我能够通过以下设置解决这个问题:

基本域: .com (这也应解决adelein在多个子域中的问题)

连接网址:需要是一个有效的http://或https://网址,末尾有一个斜杠或一个'?' URL中的某个位置,表示查询字符串。基本上,我不希望你将人们发送到静态页面,这些页面没有正确处理他们设置的授权,我想。

答案 4 :(得分:0)

如果连接网址正确,但仍然无效,请转到您的应用设置,指定正确的基本域。对于测试,您可以使用localhost。如果仍然没有运气,请转到迁移设置,禁用“新数据权限”