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-uiaccounts-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 NameTest 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