首页 文章

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

提问于
浏览
14

我从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 回答

  • 4

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

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

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

    其他浏览器将我的假域名作为返回URL发送,并且它们没有问题 .

    在任何情况下,我都停止使用假域并确保域名与Facebook中的配置完全匹配,现在问题就消失了 .

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

  • 0

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

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

    奇怪,这个问题只在IE中发生了!

  • 2

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

  • 1

    当AppID不正确时,我收到此错误 . 仔细检查您的AppID .

  • 1

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

    注意:启用沙盒模式时,只有app creator才能访问facebook登录 . 其他用户将在下面留言

    An error occurred. Please try again later.
    
  • 4

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

  • 0

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

  • 0

    更新的解决方案:在您的FB应用程序配置中,您需要在您的网站's URL set. Then you can add App Domains which I set to our website'的基本域中添加一个网站平台(例如,对于像 http://www.mycoolwebsite.com 这样的URL,只需使用 mycoolwebsite.com ) .

    New FB Settings Screenshot

    IMPORTANT: 为了使您能够使用'll need to be using a subdomain of your app'本地开发的URL . 您可以通过修改开发计算机上的hosts文件来轻松完成此操作,以使用您网站中不存在的子域,例如 local.mycoolwebsite.com . 如果您不熟悉如何执行此操作,只需为您的平台(例如mac / windows)谷歌'edit hosts file' .

相关问题