Facebook oauth对话框显示“发生错误。请稍后再试。”

时间:2012-02-29 22:26:16

标签: facebook login

我从Facebook for Facebooksites的Facebook开发者页面复制了下面的HTML,并用我的应用ID替换了APPID。我把这个页面放在我的开发Web服务器上。如果我导航到该页面,它会使登录按钮正常。但是点击登录按钮,它会打开Facebook登录页面,上面写着“发生错误。请稍后再试。”

我必须遗漏一些基本的东西。有什么想法吗?

<html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>
  <div id="fb-root"></div>
  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : 'APPID',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true // removed a comma after 'true' as it generates a script error
      });
    };
    (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
  </script>
  <div class="fb-login-button">Login with Facebook</div>
</body>
</html>

进一步调查显示,它在Chrome,Firefox和Safari中运行良好,在IE9中失败。

这是Chrome中的网址,它运行正常: https://www.facebook.com/login.php?api_key=255367907914&skip_api_login=1&display=popup&cancel_url=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%26error_reason%3Duser_denied%26error%3Daccess_denied%26error_description%3DThe%2Buser%2Bdenied%2Byour%2Brequest.%23cb%3Df16c026dc%26origin%3Dhttp%253A%252F%252Fsami.test.eu%253A81%252Ff314f6d52%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df48d09da8&fbconnect=1&next=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Fpermissions.request%3F_path%3Dpermissions.request%26app_id%3D255367907914%26redirect_uri%3Dhttps%253A%252F%252Fs-static.ak.fbcdn.net%252Fconnect%252Fxd_proxy.php%253Fversion%253D3%2523cb%253Df16c026dc%2526origin%253Dhttp%25253A%25252F%25252Fsami.test.eu%25253A81%25252Ff314f6d52%2526relation%253Dopener%2526transport%253Dpostmessage%2526frame%253Df48d09da8%26sdk%3Djoey%26display%3Dpopup%26response_type%3Dtoken%252Csigned_request%26domain%3Dsami.test.eu%26fbconnect%3D1%26from_login%3D1%26client_id%3D255367907914&rcount=1

这是IE9中的URL导致错误: https://www.facebook.com/dialog/oauth?api_key=255367907914&app_id=255367907914&client_id=255367907914&display=popup&domain=sami.test.eu&locale=en_US&origin=1&redirect_uri=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df14fd3a0495986%26origin%3Dhttp%253A%252F%252Fsami.test.eu%252Ff2d9bfc6aa24134%26relation%3Dopener%26transport%3Dflash%26frame%3Df2539c36bc13734&response_type=token%2Csigned_request&sdk=joey

8 个答案:

答案 0 :(得分:4)

在我有一段时间进行调试后,我想出来了。

我使用虚假域名在本地开发我的应用程序。我将本地主机文件中的域映射到127.0.0.1(我这样做是出于与此帖无关的原因)。

事实证明,当我导航到Facebook登录页面时,IE将URL中的127.0.0.1作为返回URL传递给facebook。 127.0.0.1与我在Facebook上为我的应用程序配置的URL不匹配,因此登录页面显示“发生错误”消息(获得正确的错误消息会很好)。

其他浏览器将我的假域名作为返回网址发送,并且没有任何问题。

无论如何,我停止使用虚假域名并确保域名与Facebook中的配置完全匹配,现在问题已经消失。

感谢所有回复。 zerkms建议比较URL最终导致解决方案。

答案 1 :(得分:4)

已解决(至少对我来说):我在我的Facebook应用设置中没有配置“Facebook登录网站”,因为我做了一个页面选项卡应用程序。没有外部网站。不幸的是,我在应用程序周围没有facebook iframe进行了调试 - &gt;这就是原因。

要摆脱我填写“Facebook登录网站”的错误,并在应用程序设置中填写“应用程序域”输入。

奇怪的是,这个问题只在IE中出现了!

答案 2 :(得分:2)

确保您在应用设置中没有(待定)作为开发人员/管理员。

答案 3 :(得分:1)

AppID不正确时出现此错误。仔细检查您的AppID。

答案 4 :(得分:1)

我之所以这样,是因为我的本地https://mywebsite.in/未配置SSL。没有用。 然后在我的应用程序中,我启用了沙箱模式,并删除了像Secure Canvas URL这样的安全URL。

注意:启用沙盒模式时,只有app creator才能访问facebook登录。其他用户将在消息

下面
An error occurred. Please try again later.

答案 5 :(得分:0)

由于它是IE特定的,答案一直是(99.5%的时间)您的服务器没有发送p3p标头。有关如何设置这些bugger的信息,请参阅http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx,以便IE播放得很好。

答案 6 :(得分:0)

我遇到了同样的问题,但这里的域名可能就是问题所在。当我们创建facebook appid时,在本节“有Facebook登录的网站”中,我们需要正确指定“网站URL”。意味着当我们在本地测试应用程序时,我们需要将URL称为“http:// localhost:// {portnumber}”,如果我们在服务器中运行,我们需要指定实际的URL,例如“http:// mywebsite。 COM”。

答案 7 :(得分:0)

更新的解决方案:在您的FB App配置中,您需要添加一个网站平台,其中包含您网站的URL集。然后,您可以添加我设置到我们网站的基本域的应用域名(例如,对于http://www.mycoolwebsite.com这样的网址,只需使用mycoolwebsite.com)。

New FB Settings Screenshot

重要提示:为了实现此目的,您需要使用应用网址的子域进行本地开发。您可以通过修改开发计算机上的hosts文件来轻松完成此操作,以使用您网站中不存在的子域,例如local.mycoolwebsite.com。如果您不熟悉如何执行此操作,只需为您的平台(例如mac / windows)谷歌“编辑主机文件”。

相关问题