Meteor - авторизация на Facebook просто не работает
Я запускаю приложение метеора с сервера в 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-ui
а также accounts-facebook
включен. Я прошел процесс регистрации приложения Facebook. Вот мои основные настройки:
Мои расширенные настройки являются настройками по умолчанию, и я переключил "Хотите ли вы сделать это приложение и все его живые функции доступными для широкой публики?" в статусе и обзоре.
Когда я на самом деле пытаюсь войти в систему с помощью Facebook, окно авторизации перенаправляет на http://localhost:3000/_oauth/facebook?code=AQBaOoQ8XVQvzdqH8dyF03vVVP3daO9UO-tB0IZYCsYOYxL0LFWVrZUt2Rh34I2HI8Y5kofDP8sj46dn--N1pk6h0WOfoLAoaZxJzwSjocmBrRowjGv8JWcyN42msFuUdQAxQzbyrhnE2mQFUQISBOVzbnsR20ozS1pUmSdCb9BbmbidS8NvKvtEmSXm1lh9zPH7DYG4KfWQ2yIWSO8JMLEWa04TOP5rLDc75ak4WfXr1emb25T7981HUL8pCF_d_NgbFCNojoyY2yIB80e1nHxhovr-V3UWcCrNjH8aljTxy-qVGCmuLa4GravNIRfy9I8&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiJlUkpSQjRja0FqVmJTWklCajhvQ01IdGlVdkktNnBXcF81d0RGR3Rod1lDIn0%3D#_=_
, который не является действительным адресом, так как сервер запущен и доступен удаленно.
Кроме того (и я полагаю, что наиболее проблематично), страница не подтверждает, что авторизация была выполнена, и действует так, как будто вход не выполнен (так что я предполагаю, что это произошло).
Может кто-нибудь сказать мне, что я делаю не так? Спасибо!
4 ответа
Чтобы заставить Метеор попытаться перенаправить с входа в Facebook на правильную целевую страницу (размещен на example.com
не localhost
), Мне нужно было заставить Метеор признать, что он запущен на example.com
не localhost:3000
, Способ сделать это состоял в том, чтобы установить переменную среды ROOT_URL
,
На баш:
export ROOT_URL=http://example.com:3000
Если вы используете сайт на example.com через порт 3000, обязательно укажите его в своем .profile
или эквивалент, чтобы переменная среды сохранялась между сеансами.
Проверьте URI перенаправления на вкладке "Дополнительно".
Должно быть так:http://localhost:3000/_oauth/facebook
Не так: http://localhost:3000/_oauth/facebook?close
Давайте попробуем это.
Сначала пройдите
Мои приложения> Тестовые приложения
Теперь в правом верхнем углу есть зеленая кнопка create a test app
Теперь появляется какая-то модальная модель, Test App Name
а также Test App Namespace
выберите любое имя
Первый
на Basic завершить это 2 варианта
Теперь в Домене приложений выберите
localhost:3000
и на сайте URL.
localhost:3000
и на продвинутых, на действительных URI перенаправления OAuth
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"
});
И это должно работать
Ответ @RiverTam сделал это для меня! У меня есть собственный сертификат SSL на локальном хосте с SSLProxy
и я ошибочно предполагал, что вы можете добавить собственные маршруты к URL-адресу обратного вызова, поэтому мне пришлось сделать несколько вещей:
1. В команде запуска метеорита экспортируйте ROOT_URL перед запуском метеора
export ROOT_URL=https://localhost:3100; meteor --settings settings-development.json --port 3100
2. Добавьте URL обратного вызова, который хочет FB, с доменом 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 к реке Там для ссылки FireFly:P