【问题标题】:Facebook Connect 'next' errorFacebook Connect“下一个”错误
【发布时间】:2011-02-12 05:54:50
【问题描述】:

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

我收到以下错误消息:


API 错误代码:100

API 错误说明:参数无效

错误消息:下一个不属于应用程序。


发送到 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

请注意,url 中的“Next”变量是:

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


有什么想法可能会出错吗?我所做的只是从 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>

感谢您的帮助!

【问题讨论】:

  • 请在您的问题中使用正确的格式,这是完全不可读的。
  • 抱歉……我在正确格式化它时遇到了一些麻烦……

标签: php javascript facebook


【解决方案1】:

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

看看改变是否适合你。

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

【讨论】:

  • 对于我来说,我在 facebook 中去掉了“www”,但我的主机自动转发到 www...所以网址不同
【解决方案2】:

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

【讨论】:

  • 嗨尼克,感谢您的回复。这不是问题——我已经这样做了。我只是认为在此代码中显示我的应用程序 ID 和应用程序密码不合适。不过,我感谢您的帮助!
【解决方案3】:

我遇到了同样的问题,但无法解决。正如姬所说,是基域。我会投赞成票,但我刚刚加入。 FB设置页面的要求太差了……我用的是localhost。

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

因此,不能只放 default.aspx。你必须以斜线结尾或有一个?这是一个奇怪的连接要求。

谢谢姬!!!

【讨论】:

    【解决方案4】:

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

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

    连接 URL:必须是有效的 http:// 或 https:// URL,末尾带有斜杠或“?” URL 中的某处,表示查询字符串。基本上,Facebook 不希望您将人们发送到无法正确处理他们设置的授权的静态页面,我猜。

    【讨论】:

    • 你在哪里看到这些设置?
    • facebook.com/developers/apps.php 点击您的应用程序,然后“编辑设置”点击“网站”
    • 但是,他们似乎改变了他们的设置页面!单击具有域的“网站”。但是连接 URL 似乎消失了......
    【解决方案5】:

    如果连接 url 正确,但仍然无法正常工作,请转到您的应用设置,指定正确的基域。对于测试,您可以使用 localhost。如果还是不行,进入迁移设置,禁用“新数据权限”

    【讨论】:

    • Adelein Rodriguez,在您的基本域中,只需指定 ddailygirl.com
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多