方法 FB.getLoginStatus 不能再从 http 页面调用

Jus*_*ner 9 node.js express facebook-javascript-sdk

所以我尝试在我的 nodejs 后端服务器中实现 Facebook 登录功能。出于测试目的,我正在尝试客户端检查登录并获取访问令牌。为此,我遵循了文档,它说要使用 Javascript SDK,我遵循了该程序,但是存在问题。

window.fbAsyncInit = function() {
    FB.init({
      appId            : '##############',
      autoLogAppEvents : true,
      xfbml            : true,
      version          : 'v4.0'
    })


    FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
    });

  }
Run Code Online (Sandbox Code Playgroud)

这是我想获取用户登录状态的代码,但我收到一条错误消息:

The method FB.getLoginStatus can no longer be called from http pages
Run Code Online (Sandbox Code Playgroud)

我非常了解生产规则,但这是我正在研究的开发模式,但仍然出现错误。我缺少什么吗?有什么我必须做的吗?我在本地主机上运行它并收到错误。

lus*_*chn 5

  • 如果您的服务器在 localhost(也就是您的机器)上运行:在 localhost 上对 https使用devcert
  • 或者,手动使用自签名证书
  • ...或者使用ngrok,如果你想公开你的本地服务器
  • 如果不在本地主机上,请使用带有 certbot的Let's Encrypt的免费证书:https ://letsencrypt.org/docs/client-options/


wvd*_*vdz 5

如果使用 create-react-app,有一个更简单的修复方法:将环境变量 HTTPS 设置为 true。更改您的启动脚本package.json

"scripts": {
  "start": "HTTPS=true react-scripts start",
  ...
}
Run Code Online (Sandbox Code Playgroud)

如果已经使用自定义脚本,您也可以将其添加到此处:

process.env.HTTPS = true;
Run Code Online (Sandbox Code Playgroud)

后一种方法的主要优点是您可以添加注释来解释它。

有关 CRA 中配置的更多信息:https ://create-react-app.dev/docs/advanced-configuration

  • 据我所知,“set HTTPS=true”没有任何效果。 (2认同)