2010-04-26 85 views
8

我想尝试新的Facebook身份验证系统,我无法让登录工作。Facebook连接'下一个'错误

我收到以下错误信息:


API错误代码:100

API错误说明:无效的参数

错误消息:未来不属于应用程序。


正在发送给Facebook的URL为:

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变量是:

下一= 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> 

感谢您的帮助!

+0

请在您的问题中使用正确的格式,这是完全不可读的。 – Rabbott 2010-04-26 03:05:13

+0

对不起,我一直有一些麻烦得到它格式正确.. – Mark 2010-04-27 02:01:01

回答

1

我对Facebook API知之甚少,但我知道您必须用您的应用程序ID和应用程序密码实际替换文本your application idyour application secret。 :)

+1

嗨尼克, 感谢您的答复。这不是问题 - 我已经完成了。我只是认为在这段代码中显示我的应用程序ID和应用程序密钥并不合适。 虽然我很欣赏帮助! – Mark 2010-04-27 02:00:20

5

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

看看是否可以更改它。

  1. 转到http://www.facebook.com/developers
  2. 编辑您是
  3. 工作的应用程序,点击左侧
  4. Connect选项卡验证是否Connect URL设置正确
+0

对于我而言,我在Facebook上留下了'www',但我的主机自动转发到www ...所以这些网址不同 – 2010-10-16 07:24:03

0

如果连接的网址是正确的,它仍然不起作用,请转到您的应用设置,指定一个正确的基本域。为了测试,你可以使用localhost。如果仍然没有运气,去迁移设置,禁用“新数据许可”

+0

Adelein Rodriguez,在您的基本域中,只需指定ddailygirl.com – JiJ 2010-05-03 19:45:20

1

我有同样的问题,并不能解决它。正如Ji所说,这是基础领域。我会投票,但我刚加入。 FB设置页面的要求非常糟糕......我使用了localhost。

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

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

感谢吉!

1

我能得到这个使用这些设置来解决:

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

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

+0

您在哪里看到那些设置? – fastmultiplication 2010-09-16 05:27:09

+0

http://www.facebook.com/developers/apps.php 点击你的应用程序,然后“编辑设置” 点击“网站” – jenming 2010-09-22 22:32:59

+0

但是,他们似乎已经改变了他们的设置页面! 点击“网站” - 具有域名。但连接URL似乎已经消失.... – jenming 2010-09-22 22:39:29