Meteor - Facebook 授权根本不起作用
Meteor - Facebook authorization simply isn't working
我正在 运行从 http://example.com:3000
的服务器下载一个流星应用程序,并尝试使用 accounts-facebook
.
通过 Facebook 授权它
我的 HTML 看起来像这样:
<head>
<title>appname</title>
</head>
<body>
<h1>Welcome to Meteor!</h1>
{{> hello}}
</body>
<template name="hello">
<button>Click Me</button>
{{>loginButtons}}
{{#if currentUser}}
Logged in
{{/if}}
</template>
我确实启用了 accounts-ui
和 accounts-facebook
。我完成了 Facebook 应用程序注册过程。这是我的基本设置:
我的高级设置是默认的,我在状态和查看中打开了"Do you want to make this app and all its live features available to the general public?"。
当我实际尝试使用 Facebook 登录时,授权 window 重定向到 http://localhost:3000/_oauth/facebook?code=AQBaOoQ8XVQvzdqH8dyF03vVVP3daO9UO-tB0IZYCsYOYxL0LFWVrZUt2Rh34I2HI8Y5kofDP8sj46dn--N1pk6h0WOfoLAoaZxJzwSjocmBrRowjGv8JWcyN42msFuUdQAxQzbyrhnE2mQFUQISBOVzbnsR20ozS1pUmSdCb9BbmbidS8NvKvtEmSXm1lh9zPH7DYG4KfWQ2yIWSO8JMLEWa04TOP5rLDc75ak4WfXr1emb25T7981HUL8pCF_d_NgbFCNojoyY2yIB80e1nHxhovr-V3UWcCrNjH8aljTxy-qVGCmuLa4GravNIRfy9I8&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiJlUkpSQjRja0FqVmJTWklCajhvQ01IdGlVdkktNnBXcF81d0RGR3Rod1lDIn0%3D#_=_
,这不是有效地址,因为服务器是 运行 并且可以远程访问。
此外(我认为问题最大),该页面不承认已发生任何授权,并且表现得像是登录失败(所以我假设它已经发生)。
谁能告诉我我做错了什么?谢谢!
让我们试试这个。
首先通过
我的应用 > 测试应用
现在 top-right 上有一个绿色按钮 create a test app
现在出现了某种模态,Test App Name
和Test App Namespace
,select任何你想要的名字
第一
在 基本 完成这 2 个选项
现在在 App Domains select
localhost:3000
并在网站上 URL。
localhost:3000
和高级,关于有效的 OAuth 重定向 URI
http://localhost:3000/sessions/create
第二
在 /server/facebook-config.js for example
上,添加此代码。
// first, remove configuration entry in case service is already configured
Accounts.loginServiceConfiguration.remove({
service: "facebook"
});
Accounts.loginServiceConfiguration.insert({
service: "facebook",
appId: "yourTestAppId",
secret: "yourTesSecret"
});
它应该可以工作
为了让 Meteor 尝试从 Facebook 登录重定向到正确的登录页面(托管在 example.com
,而不是 localhost
),我需要让 Meteor 确认它正在 运行 example.com
,而不是 localhost:3000
。这样做的方法是设置环境变量 ROOT_URL
.
在 bash:
export ROOT_URL=http://example.com:3000
如果您 运行 将站点 example.com 连接到端口 3000,请务必将其放入 .profile
或等效项中,以使环境变量在会话之间持续存在。
检查 "Advanced" 选项卡上的重定向 URI。
应该是这样的:http://localhost:3000/_oauth/facebook
不是这样的:http://localhost:3000/_oauth/facebook?close
@RiverTam 的回答对我有用!我在本地主机上使用 SSLProxy
自签名 SSL 证书,我错误地假设您可以将自定义路由添加到回调 URL,所以我必须做几件事:
1。在 meteor 运行 命令中,在 meteor 运行
之前先导出 ROOT_URL
export ROOT_URL=https://localhost:3100; meteor --settings settings-development.json --port 3100
2。添加FB想要的回调url,使用localhost域
导航到 FB App in developer.facebook.com => Facebook Login => Settings => Client OAuth Settings
并像这样添加 URL:
3。将域留空
这在FB App in developer.facebook.com => Settings => Advanced => Domain Manager
下
+999999 到 River Tam 给 FireFly 参考:P
我正在 运行从 http://example.com:3000
的服务器下载一个流星应用程序,并尝试使用 accounts-facebook
.
我的 HTML 看起来像这样:
<head>
<title>appname</title>
</head>
<body>
<h1>Welcome to Meteor!</h1>
{{> hello}}
</body>
<template name="hello">
<button>Click Me</button>
{{>loginButtons}}
{{#if currentUser}}
Logged in
{{/if}}
</template>
我确实启用了 accounts-ui
和 accounts-facebook
。我完成了 Facebook 应用程序注册过程。这是我的基本设置:
我的高级设置是默认的,我在状态和查看中打开了"Do you want to make this app and all its live features available to the general public?"。
当我实际尝试使用 Facebook 登录时,授权 window 重定向到 http://localhost:3000/_oauth/facebook?code=AQBaOoQ8XVQvzdqH8dyF03vVVP3daO9UO-tB0IZYCsYOYxL0LFWVrZUt2Rh34I2HI8Y5kofDP8sj46dn--N1pk6h0WOfoLAoaZxJzwSjocmBrRowjGv8JWcyN42msFuUdQAxQzbyrhnE2mQFUQISBOVzbnsR20ozS1pUmSdCb9BbmbidS8NvKvtEmSXm1lh9zPH7DYG4KfWQ2yIWSO8JMLEWa04TOP5rLDc75ak4WfXr1emb25T7981HUL8pCF_d_NgbFCNojoyY2yIB80e1nHxhovr-V3UWcCrNjH8aljTxy-qVGCmuLa4GravNIRfy9I8&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiJlUkpSQjRja0FqVmJTWklCajhvQ01IdGlVdkktNnBXcF81d0RGR3Rod1lDIn0%3D#_=_
,这不是有效地址,因为服务器是 运行 并且可以远程访问。
此外(我认为问题最大),该页面不承认已发生任何授权,并且表现得像是登录失败(所以我假设它已经发生)。
谁能告诉我我做错了什么?谢谢!
让我们试试这个。
首先通过
我的应用 > 测试应用
create a test app
现在出现了某种模态,Test App Name
和Test App Namespace
,select任何你想要的名字
第一
在 基本 完成这 2 个选项
现在在 App Domains select
localhost:3000
并在网站上 URL。
localhost:3000
和高级,关于有效的 OAuth 重定向 URI
http://localhost:3000/sessions/create
第二
在 /server/facebook-config.js for example
上,添加此代码。
// first, remove configuration entry in case service is already configured
Accounts.loginServiceConfiguration.remove({
service: "facebook"
});
Accounts.loginServiceConfiguration.insert({
service: "facebook",
appId: "yourTestAppId",
secret: "yourTesSecret"
});
它应该可以工作
为了让 Meteor 尝试从 Facebook 登录重定向到正确的登录页面(托管在 example.com
,而不是 localhost
),我需要让 Meteor 确认它正在 运行 example.com
,而不是 localhost:3000
。这样做的方法是设置环境变量 ROOT_URL
.
在 bash:
export ROOT_URL=http://example.com:3000
如果您 运行 将站点 example.com 连接到端口 3000,请务必将其放入 .profile
或等效项中,以使环境变量在会话之间持续存在。
检查 "Advanced" 选项卡上的重定向 URI。
应该是这样的:http://localhost:3000/_oauth/facebook
不是这样的:http://localhost:3000/_oauth/facebook?close
@RiverTam 的回答对我有用!我在本地主机上使用 SSLProxy
自签名 SSL 证书,我错误地假设您可以将自定义路由添加到回调 URL,所以我必须做几件事:
1。在 meteor 运行 命令中,在 meteor 运行
之前先导出 ROOT_URLexport ROOT_URL=https://localhost:3100; meteor --settings settings-development.json --port 3100
2。添加FB想要的回调url,使用localhost域
导航到 FB App in developer.facebook.com => Facebook Login => Settings => Client OAuth Settings
并像这样添加 URL:
3。将域留空
这在FB App in developer.facebook.com => Settings => Advanced => Domain Manager
+999999 到 River Tam 给 FireFly 参考:P