Facebook 登录在 Android 应用程序浏览器中的 Facebook 中不起作用

Posted

技术标签:

【中文标题】Facebook 登录在 Android 应用程序浏览器中的 Facebook 中不起作用【英文标题】:Facebook login is not working in Andriod Facebook in app browser 【发布时间】:2019-12-02 09:12:20 【问题描述】:

从一开始,我就在我的网站上使用 Facebook 登录 javascript SDK,但最近它在 android Facebook 应用内浏览器中停止工作。当我单击登录按钮时,它会重新加载完整页面以转到授权页面,然后返回它什么都没有

Facebook 给出的样本也有同样的问题,甚至使用 FB.login 函数和 Facebook 登录按钮 (https://developers.facebook.com/docs/facebook-login/web/login-button) 进行了测试。得到了他们两个相同的结果。它只是刷新页面。

示例代码:

<script>

function LoggedFb()
      FB.login(function (response) 
                FB.api(`/me?fields=id,email&access_token=$response.authResponse.accessToken`, function 
                (userResponse) 
                    alert(userResponse.email);
                );
            ,  scope: 'email' )


</script>

该代码适用于除 Android Facebook 应用内浏览器以外的所有平台。

谢谢。

【问题讨论】:

我遇到了完全相同的问题,但仅限于 Android 9 设备。能否请你确认?你找到解决办法了吗? @A.I.目前还没有解决这个问题,目前我已经实现了通过facebook手动登录。 谢谢。由于 Facebook 提供的示例也有同样的问题,我认为这应该是应用内 Facebook 浏览器的错误。我最近向 Facebook 报告了这个错误。如果您找到解决方案,请在此处分享。我也会这样做。谢谢。 是的,它是由于 Facebook Android 应用程序的最近更新,由于令牌请求刷新页面所致。 【参考方案1】:

对我来说,它一直在循环:登录、刷新,然后再试一次,但从不登录。

我能够通过使用FB.getLoginStatus 而不是仅使用FB.login 来解决此问题。

如果用户已经通过fb登录了,就会通过。如果没有,将进行一次刷新,但随后登录将起作用。

如果有人可以解决此问题,我将不胜感激,因此根本不会刷新。

示例代码:

function signIn() 
  FB.getLoginStatus((response: any) => 
    if (response.status !== 'connected') 
      return FB.login((response: any) => 
        handleFbResponse(response);
      , 
        scope: 'public_profile,email',
        enable_profile_selector: true,
        auth_type: 'rerequest',
        return_scopes: true
      );
     else 
      handleFbResponse(response);
    
  );


function handleFbResponse(response)  ... 

【讨论】:

以上是关于Facebook 登录在 Android 应用程序浏览器中的 Facebook 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android Facebook 登录问题

Facebook 登录在 Android 应用程序浏览器中的 Facebook 中不起作用

facebook 登录 Android 后应用程序关闭(Facebook SDK 版本 4.6.0)?

android facebook登录不适用于安装的本机facebook

android应用集成facebook登录

在 facebook 应用程序中创建登录布局,如 android