1

我正在从服务器上运行一个流星应用程序,http://example.com:3000并试图通过 Facebook 使用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-uiaccounts-facebook启用了。我完成了 Facebook 应用程序注册过程。这是我的基本设置:

基本设置

我的高级设置是默认设置,我已经切换了“你想让这个应用程序及其所有实时功能对公众可用吗?” 在状态和审查。

当我实际尝试使用 Facebook 登录时,授权窗口重定向到http://localhost:3000/_oauth/facebook?code=AQBaOoQ8XVQvzdqH8dyF03vVVP3daO9UO-tB0IZYCsYOYxL0LFWVrZUt2Rh34I2HI8Y5kofDP8sj46dn--N1pk6h0WOfoLAoaZxJzwSjocmBrRowjGv8JWcyN42msFuUdQAxQzbyrhnE2mQFUQISBOVzbnsR20ozS1pUmSdCb9BbmbidS8NvKvtEmSXm1lh9zPH7DYG4KfWQ2yIWSO8JMLEWa04TOP5rLDc75ak4WfXr1emb25T7981HUL8pCF_d_NgbFCNojoyY2yIB80e1nHxhovr-V3UWcCrNjH8aljTxy-qVGCmuLa4GravNIRfy9I8&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiJlUkpSQjRja0FqVmJTWklCajhvQ01IdGlVdkktNnBXcF81d0RGR3Rod1lDIn0%3D#_=_,这不是一个有效地址,因为服务器是远程运行和访问的。

此外(我想最成问题),该页面不承认已经发生任何授权,并且表现得好像登录失败(所以我认为它已经失败)。

谁能告诉我我做错了什么?谢谢!

4

4 回答 4

10

为了让 Meteor 尝试从 Facebook 登录重定向到正确的登录页面(托管在example.com,而不是localhost),我需要让 Meteor 确认它正在运行example.com,而不是localhost:3000。这样做的方法是设置环境变量ROOT_URL

在 bash 上:

export ROOT_URL=http://example.com:3000

如果您在 example.com 上的端口 3000 上运行该站点,请确保将其放入您的.profile或等效项中,以使环境变量在会话之间保持不变。

于 2015-01-23T17:41:02.833 回答
3

检查“高级”选项卡上的重定向 URI。

它应该是这样的:http://localhost:3000/_oauth/facebook

不像这样:http://localhost:3000/_oauth/facebook?close

于 2015-11-17T19:49:25.917 回答
2

让我们试试这个。

首先通过

我的应用 > 测试应用

FB 开发人员示例 现在在右上角有一个绿色按钮create a test app

绿色按钮 Facebook

现在出现某种模式,Test App Name然后Test App Namespace选择您想要的任何名称

第一的

Basic上完成这 2 个选项

现在在 App Domains 上选择

localhost:3000

并在网站 URL 上。

localhost:3000

advanced上,在 Valid OAuth redirect URIs 上

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"
});

它应该工作

于 2015-01-22T03:50:39.127 回答
1

@RiverTam 的回答为我做了!我在 localhost 上拥有自签名 SSL 证书,SSLProxy并且我错误地假设您可以将自定义路由添加到回调 URL,因此我必须做几件事:

1.在meteor run命令中,先导出ROOT_URL,然后再meteor run

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

于 2017-06-09T14:38:22.997 回答