Facebook登录按钮重定向到MS Edge上的空白页面

时间:2017-11-09 22:34:03

标签: javascript facebook facebook-javascript-sdk facebook-login microsoft-edge

我正在使用登录按钮进行共享。按钮和共享功能适用于除MS Edge之外的所有浏览器。它曾经在Edge 25上工作(我目前在Edge 38上)。

问题是,当我点击登录按钮时,会出现一个登录弹出窗口,我可以在其中输入我的凭据。一旦输入它们并且我尝试登录,弹出窗口就不会关闭并重定向到这个地址:

https://www.facebook.com/v2.1/dialog/oauth?app_id=141515299765971&auth_type=&channel_url=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2FlY4eZXm_YWu.js%3Fversion%3D42%23cb%3Df2de29c1e9204f4%26domain%3Dikeabuilds.sandbox3.2020.net%26origin%3Dhttp%253A%252F%252Fikeabuilds.sandbox3.2020.net%252Ff1deb23126bcc0c%26relation%3Dopener&client_id=141515299765971&display=popup&domain=ikeabuilds.sandbox3.2020.net&e2e=%7B%7D&locale=en_US&logger_id=80452c59-88a0-7681-0f2c-ac690c1d62b8&origin=1&redirect_uri=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2FlY4eZXm_YWu.js%3Fversion%3D42%23cb%3Df1aa391653df35c%26domain%3Dikeabuilds.sandbox3.2020.net%26origin%3Dhttp%253A%252F%252Fikeabuilds.sandbox3.2020.net%252Ff1deb23126bcc0c%26relation%3Dopener%26frame%3Df7b23e2a9aa328&ref=LoginButton&response_type=none%2Ctoken%2Csigned_request&scope=publish_actions&sdk=joey&seen_revocable_perms_nux=false&version=v2.1

我也不被视为已登录。我在网上搜索了很多,甚至阅读了有关登录按钮的文档,除了只有一个解决方法之外没有找到任何东西。它包括将facebook url添加到windows的Internet选项中的可信站点。它不是一个可行的解决方案,因此对我来说不是一个解决方案。图像是facebook登录html页面的代码,空白重定向页面和包含登录按钮的页面。我还有一个 .js 页面,其中包含所有与Facebook相关的功能,但不适合一张图片,如果需要,我会提供。发生了什么事?

Facebook登录按钮

重定向链接

包含facebook登录按钮的页面的HTML代码

2 个答案:

答案 0 :(得分:3)

根据我的测试结果,我能够重现您的问题,但我不确定您的情况是否属实。

当MS Edge或IE 阻止弹出窗口并且用户选择" 允许一次"时会发生同样的问题弹出窗口,当弹出窗口尝试重定向时,您将获得空白页面(已被阻止)。

如果您选择" 始终允许",则弹出窗口会重定向并正确关闭。

你可以做些什么来克服这个问题,实际上是启用

  • 登录重定向,
  • 让重定向在您的域中放置一个Cookie
  • 使用Facebook JS SDK并检查用户是否已连接。

因此,首先启用登录重定向

enter image description here

然后执行:

FB.init({
  appId            : 'APP_ID',
  autoLogAppEvents : true,
  cookie           : true,  // <-- use this
  xfbml            : true,
  version          : 'v3.0'
});
var uri = encodeURI('http://test.gr');
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        console.log(response.status); // should log connected.

    } else {
       window.location = 'https://www.facebook.com/v3.0/dialog/oauth?client_id=APP_ID&redirect_uri='+encodeURI(uri)+'&display=popup&scope=user_status&response_type=token&version=v3.0';
    }
});

替换&#34; test.gr&#34;和&#34; APP_ID&#34;使用您的域名和应用ID。

重定向回您的网站后,系统会为您的网址添加名称为 fbm_ {APP_ID} 的Cookie,以便用户登录。

参考

答案 1 :(得分:0)

我认为您必须将javascript SDK保留为名为manual login flow的更具可自定义性的解决方案。

您可以像这样编写自定义按钮,而不是使用fb:login-button

<a href="https://www.facebook.com/v3.0/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}&state={state-param}">Log-in to my app</a>

并使用您可以使用自定义代码处理的应用的html页面的网址自定义redirect_uri参数,例如感谢消息和window.close()超时。