无法再从 http 页面调用方法 FB.getLoginStatus
The method FB.getLoginStatus can no longer be called from http pages
所以我尝试在我的 nodejs 后端服务器中实现 Facebook 登录功能。出于测试目的,我正在尝试客户端检查登录并获取访问令牌。为此,我按照文档进行操作,它说要使用 Javascript SDK 并且我按照程序进行操作,但是有一个问题。
window.fbAsyncInit = function() {
FB.init({
appId : '##############',
autoLogAppEvents : true,
xfbml : true,
version : 'v4.0'
})
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
这是我想要获取用户登录状态的代码,但我收到一条错误消息:
The method FB.getLoginStatus can no longer be called from http pages
我非常了解生产规则,但这是我正在使用的开发模式,但仍然出现错误。我有什么想念的吗?有什么我必须做的吗?我在本地主机上 运行 它并收到错误。
您需要在您的服务器(即本地主机)上部署一个 SSL 证书。它将拒绝来自不安全位置的任何内容。
- 如果您的服务器在本地主机上运行(又名在您的机器上):使用 devcert 在本地主机上使用 https
- 或者,手动使用 self signed certificate
- ...或者使用ngrok,如果你想公开你的本地服务器
- 如果不在本地主机上,请使用 Let's Encrypt with certbot: https://letsencrypt.org/docs/client-options/
的免费证书
为了解决这个问题 "The method FB.getLoginStatus can no longer be called from http pages" 我使用了应用程序 https://ngrok.com/
它通过隧道或类似的方式在我的本地服务器上的浏览器中生成 https
Windows 10 +wsl(Debian)
下载 ngrok
解压到文件夹
运行 命令并使用 ngrok
导航到文件夹
现在你可以 运行 :"ngrok http:80" <-假设你有 apache2 服务工作
我的项目在 DocumentRoot 的 different/sub 文件夹中,我还需要这样做:
如果使用 create-react-app,有一个更简单的修复方法:将环境变量 HTTPS 设置为 true。在 package.json
:
中更改您的启动脚本
"scripts": {
"start": "HTTPS=true react-scripts start",
...
}
如果已经在使用自定义脚本,您也可以将其添加到此处:
process.env.HTTPS = true;
后一种方式的主要优点是可以加评论说明。
有关 CRA 中配置的更多信息:https://create-react-app.dev/docs/advanced-configuration
在 package.json 中,我刚刚使用了这个:
"serve": "vue-cli-service serve --https true",
而不是:
"serve": "vue-cli-service serve",
而且效果很好。
所以我尝试在我的 nodejs 后端服务器中实现 Facebook 登录功能。出于测试目的,我正在尝试客户端检查登录并获取访问令牌。为此,我按照文档进行操作,它说要使用 Javascript SDK 并且我按照程序进行操作,但是有一个问题。
window.fbAsyncInit = function() {
FB.init({
appId : '##############',
autoLogAppEvents : true,
xfbml : true,
version : 'v4.0'
})
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
这是我想要获取用户登录状态的代码,但我收到一条错误消息:
The method FB.getLoginStatus can no longer be called from http pages
我非常了解生产规则,但这是我正在使用的开发模式,但仍然出现错误。我有什么想念的吗?有什么我必须做的吗?我在本地主机上 运行 它并收到错误。
您需要在您的服务器(即本地主机)上部署一个 SSL 证书。它将拒绝来自不安全位置的任何内容。
- 如果您的服务器在本地主机上运行(又名在您的机器上):使用 devcert 在本地主机上使用 https
- 或者,手动使用 self signed certificate
- ...或者使用ngrok,如果你想公开你的本地服务器
- 如果不在本地主机上,请使用 Let's Encrypt with certbot: https://letsencrypt.org/docs/client-options/ 的免费证书
为了解决这个问题 "The method FB.getLoginStatus can no longer be called from http pages" 我使用了应用程序 https://ngrok.com/
它通过隧道或类似的方式在我的本地服务器上的浏览器中生成 https
Windows 10 +wsl(Debian)
下载 ngrok
解压到文件夹
运行 命令并使用 ngrok
导航到文件夹
现在你可以 运行 :"ngrok http:80" <-假设你有 apache2 服务工作
我的项目在 DocumentRoot 的 different/sub 文件夹中,我还需要这样做:
如果使用 create-react-app,有一个更简单的修复方法:将环境变量 HTTPS 设置为 true。在 package.json
:
"scripts": {
"start": "HTTPS=true react-scripts start",
...
}
如果已经在使用自定义脚本,您也可以将其添加到此处:
process.env.HTTPS = true;
后一种方式的主要优点是可以加评论说明。
有关 CRA 中配置的更多信息:https://create-react-app.dev/docs/advanced-configuration
在 package.json 中,我刚刚使用了这个:
"serve": "vue-cli-service serve --https true",
而不是:
"serve": "vue-cli-service serve",
而且效果很好。