问题 FB通过网络应用登录后的空白屏幕?


我试过跟踪FB移动网络“入门指南”: https://developers.facebook.com/docs/guides/mobile/web/ 我在iphone上打开全屏的网络应用程序。

但是当我尝试使用打开的fb登录页面登录时,单击“登录”按钮后,我得到一个空白的白色屏幕。用户登录但是..我知道这是因为如果我关闭并重新打开我的网络应用程序,我会检查登录状态并尝试获取一些用户信息,并且它工作正常...

当我在桌面的chrome或我的iphone的safari中尝试相同的Web应用程序时,登录过程就可以了......它只能在全屏web应用程序中打破。

有任何想法吗??我只是关注FB中的示例代码:-(

谢谢。


12831
2017-11-05 11:13


起源

我有同样的问题。如果我发现任何事情我会告诉你,请同样:) - fancy


答案:


您需要做的就是将“display:'touch'”和redirect_uri参数添加到登录中:

FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
      console.log('Good to see you, ' + response.name + '.');
       FB.logout(function(response) {
         console.log('Logged out.');
       });
     });
  } else {
    console.log('User cancelled login or did not fully authorize.');
  }
}, {scope: 'email,publish_stream' , redirect_uri: 'YOUR_REDIRECT_URL' , display : 'touch'});

7
2017-11-27 01:34





我在这篇文章中找到了一个更好的答案: FB.login破解了iOS WebApp的流程

var permissions = 'email,publish_stream,manage_pages,read_stream';
var permissionUrl = "https://m.facebook.com/dialog/oauth?client_id=" + m_appId + "&response_type=code&redirect_uri=" + encodeURIComponent(m_appUrl) + "&scope=" + permissions;
window.location = permissionUrl;

马克上面的答案不再适用了... Facebook倾向于经常破坏这样的事情。使用window.location显示登录页面就可以了。

登录后我的应用需要刷新,所以效果很好。因此,如果您不想刷新,则可能需要重新考虑您的流程。


6
2018-01-22 22:22



这仍然有效!我可以证实马克的答案没有。 - OptimusCrime


我找到了解决这个问题的方法......似乎我可以在login()方法中使用一个未记录的'redirect_uri'属性,例如

login({scope:'email', redirect_uri:'where_to_go_when_login_ends'})

它是为fb桌面SDK记录的,所以我给它一个去,它有点工作。当我说“有点”时,我的意思是在网络手机上,似乎没问题,但如果你试图在桌面浏览器中运行它,登录弹出窗口将重定向到登录弹出窗口中的给定网址 - 而不是在其父窗口内。

我希望这足够好并且不会引起任何副作用,我实在说不出来。但这是我在此期间因缺乏其他选择而使用的:^)


1
2017-11-09 15:18



更正:参数名称是redirect_uri - 不是网址... - Sagi Mann
萨吉曼,我非常爱你!这是hacky,一个解决方案,但现在工作!!!!非常感谢你找到/发布这个bug已经杀了我! - fancy
所以这意味着我不应该使用登录回调来处理响应。由于页面重新加载,它将始终转到FB.getLoginStatus?我现在正试图这样做而且它没有用完,FB.getLoginStatus永远不会触发它的回调。 - fancy
这个lib让我想哭 - fancy
终于想通了,FB.getLoginStatus真的很好看出于某种原因。再次感谢! - fancy


这可能是facebooks API中的一个错误。我认为他们没有在iPhone网络应用模式下测试他们的API。问题可以在这里遵循: https://developers.facebook.com/bugs/317323871621290


0
2017-12-27 11:02