Суд запретил Instagram и Facebook. Что это значит для пользователей — РБК
Деятельность Instagram и Facebook в России признана экстремистской и запрещена, но пользоваться ими по-прежнему возможно, хотя и с рядом ограничений. Ответственность может наступить за размещение рекламы или платежи площадкам
Фото: Jeff Chiu / AP
Тверской суд Москвы в понедельник, 21 марта, признал деятельность социальных сетей Instagram и Facebook, принадлежащих компании Meta Platforms Inc., экстремистской и запретил их на территории России, сообщили РБК в пресс-службе суда.
Признать Meta экстремистской организацией попросили Роскомнадзор и Генеральная прокуратура. Это стало ответом на публикацию внутреннего письма компании, в котором сообщалось, что та временно снимает в своих соцсетях запрет для жителей ряда стран на размещение информации, содержащей призывы к насилию в отношении российских граждан, в том числе военнослужащих. Как позже пояснял представитель Meta, они разрешили призывы к насилию против военных, но намеревались ограничивать подобные выпады в адрес обычных российских граждан.
Facebook заблокирован в России с 4 марта, а Instagram — c 14-го. Что изменится после признания их владельца экстремистской организацией — в материале РБК.
Video
adv.rbc.ru
Выступавший в суде по делу о признании Meta экстремистской организацией прокурор заявил, что использование гражданами и компаниями Facebook и Instagram не может быть признано экстремизмом. Россиян не будут привлекать к ответственности за использование этих платформ.
Ведение своих аккаунтов в социальных сетях, в том числе при помощи VPN (виртуальная частная сеть — безопасное зашифрованное подключение пользователя к Сети, которое позволяет подключиться к нужным ресурсам через промежуточную точку в другой стране и защитить трафик от анализа внутри исходной страны), не будет подпадать под признаки деятельности запрещенных в России организаций, отметил адвокат, управляющий партнер AVG Legal Алексей Гавришев.
При этом в заявлении суда указано, что это решение не распространяется на деятельность мессенджера WhatsApp, также принадлежащего Meta, «ввиду отсутствия функций по публичному распространению информации». Ранее участники рынка стали замечать сбои в работе WhatsApp и связали их с блокировками продуктов Meta на территории России, однако представитель Роскомнадзора опровергал такую связь.
Ранее о том, что российским законодательством не предусмотрены последствия для пользователей, у которых есть аккаунты в Facebook и Instagram, заявлял и председатель комитета Совета Федерации по конституционному законодательству и государственному строительству Андрей Клишас. По его словам, если ресурсы Meta будут признаны экстремистскими и подлежащими блокировке, то ответственность государства, соответствующих органов исполнительной власти — обеспечить исполнение этого решения на всей территории России.
Пока не было практики ответственности за публикации на запрещенных ресурсах, говорит руководитель практики санкционного права и комплаенса Pen & Paper Сергей Гландин. «Однако это вполне может быть показательная история, если кто-то напишет антиправительственный пост», — не исключил он. Кроме того, Гландин видит риски для сотрудников Meta в России, которых теперь можно признать экстремистами, а также для операторов связи, провайдеров интернета, поисковиков: они будут обязаны маркировать запрещенные ресурсы соответствующим образом и ограничивать доступ. В противном случае им грозят многомиллионные штрафы. Юрист Pen & Paper также указал, что использовать VPN в России не запрещено, но власти организовали работу по блокировке VPN-сервисов. Как ранее заявлял председатель комитета Госдумы по информационной политике Александр Хинштейн, Роскомнадзор заблокировал в России уже около 20 VPN-сервисов.
В настоящее время Facebook и Instagram прекратили интеграцию и прием платежей на территории России, поэтому производить оплату рекламы практически невозможно, говорит Гавришев.
«Безусловно, представители бизнеса, являющиеся пользователями рекламных сервисов Meta, на время потеряют спрос потенциальной аудитории, однако представители российских интернет-сервисов в ближайшее время подхватят и компенсируют потребности в рекламных услугах для граждан и бизнеса», — уверен он. По мнению эксперта, если все же возникнут единичные случаи успешной оплаты рекламных сервисов, они не будут подпадать под признаки финансирования экстремизма. Все действия в социальных сетях Meta находятся на особом контроле правоохранительных органов, и к уголовной ответственности будут привлекать только лиц, чьи цели ведения аккаунтов направлены на нарушение российского законодательства и всевозможные призывы.
Однако, по словам Гландина, все, что связано с финансированием, попадает под ст. 282.3 УК РФ (финансирование экстремизма), по которой грозит наказание вплоть до восьми лет лишения свободы. «Если человек купил акции Meta на территории другой страны и это станет известно властям, наказание также грозит.
Риски сохраняются и для людей с двойным гражданством», — отметил он.
Ранее юристы не смогли однозначно сказать, будет ли считаться нарушением приобретение акций Meta (до сих пор ими торговали Московская и Санкт-Петербургская биржи). Как говорил один из авторов закона о СМИ Михаил Федотов, акционерам Meta невозможно будет предъявить обвинение в финансировании экстремистской деятельности, поскольку они владеют акциями, но не управляют организацией. Однако управляющий партнер юридической компании Enterprise Legal Solutions Юрий Федюкин указывал, что по закону финансирование экстремистской деятельности — это предоставление средств, их сбор или оказание финансовых услуг, направленных на обеспечение работы организации из списка, а «эмиссия ценных бумаг публичным акционерным обществом направлена в первую очередь на привлечение инвестиций, то есть средств, которые направляются в том числе и на финансирование деятельности организации».
В пояснении, опубликованном Российской ассоциацией электронных коммуникаций (РАЭК), говорится, что, исходя из формального следования антиэкстремистскому законодательству, к ответственности можно привлечь за выполнение работ или оказание услуг в интересах Meta; заказ платных услуг, включая размещение рекламы, и осуществление каких-либо платежей в пользу корпорации; публичную демонстрацию ее логотипа.
Как пояснил директор по юридическим вопросам группы компаний РБК Тимофей Щербаков, ситуация с признанием социальных сетей компании Meta запрещенными в связи с экстремистской деятельностью «в целом беспрецедентная» и «пока не совсем понятно, как быть российским СМИ». «Каждая компания сейчас сама решает, как ей стоит поступить с собственными аккаунтами в социальных сетях и упоминанием запрещенных ресурсов, но большинство, включая и нашу компанию, как минимум будут избегать использования символики и ссылок на Facebook и Instagram, поскольку данные ресурсы теперь официально связаны с осуществлением экстремистской деятельности», — отметил он. В остальном, по словам Щербакова, участники рынка будут ориентироваться на комментарии официальных лиц государства и правоприменительную практику.
Директор по юридическим вопросам РБК также говорит, что пока особых пометок вроде «компания признана экстремистской на территории России» СМИ делать не должны, но такая необходимость может появиться, как только решение суда будет опубликовано и соответствующие записи будут внесены в государственный реестр организаций, в отношении которых имеются сведения о причастности к экстремистской деятельности.
Как заявили в пресс-службе Роскомнадзора, в соответствии с пояснениями Генеральной прокуратуры иск не направлен на ограничение действий по использованию программных продуктов Meta как физическими, так и юридическими лицами, не принимающими участия в запрещенной законом деятельности.
«Однако, согласно ст. 4 закона РФ «О средствах массовой информации», при распространении информации российские СМИ обязаны маркировать такую организацию и ее социальные сети в своих редакционных материалах. Маркировка должна содержать указание, что ее деятельность на территории России запрещена. Ответственность для СМИ за отсутствие такой маркировки наступает после включения Минюстом России экстремистской организации в соответствующий перечень», — отметил представитель пресс-службы Роскомнадзора.
По его словам, не допускается также демонстрация российскими СМИ логотипа организации Meta Platforms Inc.
и принадлежащих ей социальных сетей Facebook и Instagram. Роскомнадзор исключит организацию из перечня иностранных лиц, осуществляющих деятельность в сети Интернет на территории Российской Федерации, а Instagram и Facebook — из реестра социальных сетей.
C 1 января в России начал действовать «закон о приземлении», по которому компании, чья суточная аудитория превышает 500 тыс. человек, должны открыть в России филиал, представительство или уполномоченное юрлицо; зарегистрировать личный кабинет на сайте Роскомнадзора и разместить на своем ресурсе электронную форму для обратной связи. 22 февраля стало известно, что Meta начала исполнять этот закон, запустив процедуру регистрации личного кабинета на сайте Роскомнадзора. Но в нынешних условиях, по словам Гавришева, Meta не может функционировать в России ни в каком виде. «Сегодня их деятельность попросту запрещена в России, и это исключает ее присутствие в стране. Соответственно, и все процедуры по ее приземлению сейчас не возможны, потому что ее деятельность на территории страны как запрещенной организации автоматически будет подпадать под уголовное законодательство», — говорит он.
Решение обращено к немедленному исполнению, однако у Meta есть формальное право оспорить его в апелляции Мосгорсуда в течение 30 дней, заключил Гландин.
Пытаюсь зайти в свой аккаунт в фейсбуке, а мне пишет проверьте подключение к интернету. У меня с инетом все впорядке, я же пишу вам сейчас
Midnight Rain (22659)
1
03.02.2019, 06:18
Попробуйте стереть данные и кэш приложения, после чего повторите попытку авторизоваться в социальной сети. Как очистить данные:
Настройки → Приложения → Facebook Messenger → Стереть данные → Очистить кэш → ОК
Если это не поможет — отпишитесь тут, будем искать другое решение проблемы.
Геннадий#226314
1
04.04.2022, 14:02
Хочу востановить фейсбук
Геннадий#226339
1
05.04.2022, 15:20
Первое пробывал нет фейсбука
Геннадий#226340
1
05.
04.2022, 15:23
Неработает фейсбук
Наталья#226395
1
09.04.2022, 08:14
Здравствуйте, даже через впн не могу с мобильного интернета почему-то зайти в facebook.
Гость#226704
1
24.04.2022, 03:14
Не войти а фейсбук, пишет «проверьте подключение к интернету». У меня с инетом все впорядке. В Фейсбук не войти и с компа и с телефона.
Midnight Rain (22659)
1
25.04.2022, 12:47
Гость
Не войти а фейсбук, пишет «проверьте подключение к интернету». У меня с инетом все впорядке. В Фейсбук не войти и с компа и с телефона.
Facebook заблокирован на территории Российской Федерации на сегодняшний день. Если вы хотите получить к нему доступ, то необходимо воспользоваться
одним из VPN-сервисов из нашего каталога.
В ответ на сообщение от Гость #226704
Гость#227347
1
30.05.2022, 07:48
Всем привет. Что делать если при входе в Фейсбук просит подтвердить акаунт с устройства с которого заходил ранее. Это сделать не могу, так как телефон сломан. Как быть? Ни каких решений найти не могу.
ПОМОГИТЕ#227823
10.07.2022, 13:39
ВЫбивает оо этого акаунта только у вас есть пароль я нажимаю на галочку потом продолжить и галочка убирается (Я в фейсбуке с
Украины )
Гость#228032
1
28.07.2022, 13:38
Помагите пожалуйста с проблемой, у меня на одном телефоне открыт Фейсбук, а с другого телефона хочу зайти с верным паролем, не могу пишит нет подключения к сети. Хотя ВПН включён
ГостьТаня#228111
1
06.08.2022, 09:28
Здравствуйте, не могу зайти в фейсбук, пишет нет подключения, но оно есть. Нахожусь в Польше. В чём проблема?
Гость#228643
1
18.09.
2022, 13:18
Гость
Всем привет. Что делать если при входе в Фейсбук просит подтвердить акаунт с устройства с которого заходил ранее. Это сделать не могу, так как телефон сломан. Как быть? Ни каких решений найти не могу.
В ответ на сообщение от Гость #227347
Дмитрий#228774
1
04.10.2022, 07:31
Та же проблема. Снос, перестановка, очистка кэша не помогают.
Нет интернета пишет
Гость#228936
19.10.2022, 05:13
Всем привет.Доступ на телефоные номера нету. Но, на электронную почту имею доступ. Всё равно моя страницу звблокировали по это причине.Что делать если при входе в Фейсбук просит подтвердить акаунт с устройства с которого заходил ранее. Это сделать не могу, так как телефон сломан. Как быть? Ни каких решений найти не могу. Прошу помогите найти решение.
Гость#229134
02.11.2022, 10:16
Midnight Rain
Попробуйте стереть данные и кэш приложения, после чего повторите попытку авторизоваться в социальной сети.Как очистить данные:
Настройки → Приложения → Facebook Messenger → Стереть данные → Очистить кэш → ОК
Если это не поможет — отпишитесь тут, будем искать другое решение проблемы.
В ответ на сообщение от Midnight Rain #201789
Alex#229214
08.11.2022, 08:50
Не пе
Гость
Midnight Rain
Попробуйте стереть данные и кэш приложения, после чего повторите попытку авторизоваться в социальной сети. Как очистить данные:Настройки → Приложения → Facebook Messenger → Стереть данные → Очистить кэш → ОК
Если это не поможет — отпишитесь тут, будем искать другое решение проблемы.
Ни очистка кеша и данных ни снос приложения не помогают. Пишет — нет интернета. Использую платный vpn со статичным ip. Могу зайти только через браузер.
В ответ на сообщение от Гость #229134
Гость#229775
13.12.2022, 18:28
Alex
Не пеГость
Midnight Rain
Попробуйте стереть данные и кэш приложения, после чего повторите попытку авторизоваться в социальной сети. Как очистить данные:Настройки → Приложения → Facebook Messenger → Стереть данные → Очистить кэш → ОК
Если это не поможет — отпишитесь тут, будем искать другое решение проблемы.
Ни очистка кеша и данных ни снос приложения не помогают. Пишет — нет интернета. Использую платный vpn со статичным ip. Могу зайти только через браузер.
тоже самое уже чего только не попробовал….
В ответ на сообщение от Alex #229214
Как реализовать регистрацию в Facebook
com/Schemas/MadCap.xsd» noshade=»» align=»center» size=»0″/>
В этом разделе справки описаны шаги по реализации гостевой регистрации с использованием Facebook как способа получения информации о конечном пользователе.
В этом сценарии портал регистрации гостей предоставляет возможность зарегистрироваться в качестве гостя или войти в Facebook, чтобы завершить процесс регистрации. Если конечный пользователь выбирает опцию Facebook, ExtremeCloud IQ — Site Engine OAuth для безопасного доступа к учетной записи конечного пользователя Facebook, получения общедоступных данных конечного пользователя и использования этих данных для завершения процесса регистрации.
| ПРИМЕЧАНИЕ: | Гостевой OAuth (например, Google, Yahoo) может не поддерживать собственные мобильные браузеры и отображать ошибку «агента пользователя». Для выхода в сеть используйте стандартное браузерное приложение (например, Google Chrome). |
Гостевая регистрация с использованием Facebook имеет два основных преимущества:
- Она предоставляет ExtremeCloud IQ — Site Engine более высокий уровень пользовательской информации, получая информацию из учетной записи Facebook конечного пользователя вместо того, чтобы полагаться на информацию, введенную конечным пользователем.
- Упрощает процесс регистрации для конечного пользователя. ExtremeCloud IQ — Site Engine извлекает общедоступную информацию из учетной записи Facebook конечного пользователя и использует эту информацию для заполнения полей регистрации имени и адреса электронной почты.
- Требования для регистрации в Facebook
- Создание приложения Facebook
- Конфигурация портала для Facebook
- Как работает регистрация на Facebook
- Особые рекомендации по развертыванию
- Сети, использующие DNS-прокси
Это требования к конфигурации для регистрации на Facebook.
- Механизм ExtremeControl должен иметь доступ в Интернет, чтобы получать информацию о пользователе из Facebook.
- Политика незарегистрированного доступа ExtremeControl должна предоставлять доступ к сайту Facebook (либо включить все SSL, либо сделать поправку на серверы Facebook).
- Уникальное приложение Facebook должно быть создано на странице разработчиков Facebook (см. инструкции ниже).
- В конфигурации портала должна быть включена регистрация на Facebook, а также идентификатор приложения Facebook и секрет (см.
инструкции ниже).
Создание приложения Facebook
При реализации гостевой регистрации с помощью Facebook необходимо сначала создать приложение Facebook. Это создает идентификатор приложения и секрет приложения, которые необходимы как часть процесса OAuth ExtremeCloud IQ — Site Engine. Используйте следующие шаги, чтобы создать приложение Facebook.
- Перейдите на страницу разработчиков Facebook по адресу https://developers.facebook.com/apps/. Если у вас уже есть учетная запись разработчика, вы можете войти в нее, в противном случае вам необходимо создать учетную запись разработчика.
- При входе в систему нажмите кнопку Добавить новое приложение .

Откроется окно «Добавить новое приложение». - Выберите ссылку базовой настройки в нижней части окна.
Откроется окно Создать новый идентификатор приложения.
- Введите отображаемое имя , введите контактный адрес электронной почты и выберите категорию для своего приложения.
Отображаемое имя — это имя приложения, представляемое конечному пользователю, когда он предоставляет ExtremeCloud IQ — Site Engine доступ к своей информации Facebook, и должно четко указывать его цель, например, гостевая регистрация Extreme Networks.
- Выберите Создать идентификатор приложения .
Панель Dashboard открывается и отображает информацию о новом приложении, включая идентификатор приложения и секрет приложения.

- Выберите Настройки на левой панели.
Откроется вкладка Basic панели настроек.
- Введите допустимое доменное имя для модулей ExtremeControl в поле 9Поле 0030 App Domains . Например, если механизм ExtremeControl, к которому подключаются пользователи, называется ExtremeControl engine.AbcCompany.com, введите «abccompany.com» в поле App Domains .
- Выберите Добавить платформу .
Откроется окно выбора платформы.
- Выберите Веб-сайт .
Панель веб-сайта отображается на вкладке Basic .
- Введите доменное имя, которое вы добавили в поле App Domains на шаге 7 в поле URL-адрес сайта .

- Выберите Сохранить изменения .
- Выбрать Добавить продукт на левой панели.
Откроется панель настройки продукта.
- Нажмите кнопку «Вход через Facebook» «Начать» .
Откроется панель «Начало работы».
- Введите действительных URI перенаправления OAuth . URI перенаправления требуется для перенаправления пользователя обратно в движок с токеном доступа, который ExtremeCloud IQ — Site Engine использует для доступа к учетной записи пользователя и извлечения пользовательских данных. URI перенаправления должен быть в следующем формате:
https://
/fb_oauth URI перенаправления должен быть добавлен для каждого ядра ExtremeControl, где конечные пользователи могут зарегистрироваться через Facebook.

- Выберите Сохранить изменения .
- Выберите App Review на левой панели.
Откроется панель просмотра приложений.
- Выберите кнопку Нет в поле Сделать <Отображаемое имя> общедоступным , чтобы изменить кнопку на Да .
Появится окно подтверждения.
- Выберите Подтвердите .
В разделе «Утвержденные элементы» отображается список разрешений по умолчанию, обеспечивающих доступ к данным конечного пользователя. (Для получения дополнительной информации о настройке разрешений см. https://developers.facebook.com/docs/facebook-login/permissions#reference.)
Ваше приложение создано и готово к использованию.

Вам необходимо добавить идентификатор приложения и секрет приложения в конфигурацию портала.
Конфигурация портала
Идентификатор приложения и секрет приложения, назначенные во время создания приложения Facebook, должны быть указаны в конфигурации портала, чтобы весь процесс завершился должным образом.
- Откройте Управление > вкладка «Контроль доступа».
- В дереве левой панели разверните Конфигурации ExtremeControl > Дерево портала и выберите Регистрация гостя.
- В разделе «Настройка полей» нажмите кнопку «Открыть редактор», чтобы открыть окно «Управление настраиваемыми полями».
окно, в котором вы можете изменить поля портала регистрации. При регистрации в Facebook используются только поля «Имя», «Фамилия» и «Адрес электронной почты», а также параметр «Показать политику допустимого использования» (AUP). Все остальные поля относятся только к регистрации обычного гостя. Если выбран параметр Display AUP, авторизованный портал проверяет, что AUP был подтвержден, прежде чем перенаправить пользователя на Facebook. - Установите флажок «Регистрация на Facebook».
- Введите идентификатор приложения Facebook и секрет приложения Facebook.
- Выбрать Сохранить . Отображаются предупреждающие сообщения о том, что метод проверки и спонсорство не используются для регистрации на Facebook, и что требуется FDQN.
- Примените новую конфигурацию к своим двигателям.

Как работает регистрация на Facebook
После того, как вы настроили регистрацию на Facebook с помощью описанных выше шагов, процесс регистрации работает следующим образом:
- Конечный пользователь пытается получить доступ к внешнему веб-сайту. Их HTTP-трафик перенаправляется на портал авторизации.
- На портале регистрации гостей конечный пользователь выбирает вариант регистрации с помощью Facebook.
- Конечный пользователь перенаправляется на логин Facebook. Если настроен параметр «Политика приемлемого использования», авторизованный портал проверяет, что AUP был подтвержден, прежде чем перенаправить пользователя на Facebook.

- При входе конечному пользователю предоставляется информация, которую ExtremeCloud IQ — Site Engine получает от Facebook.
- Конечный пользователь предоставляет ExtremeCloud IQ — Site Engine доступ к информации Facebook и перенаправляется обратно на авторизованный портал, где он видит сообщение «Выполняется регистрация».
- Facebook предоставляет запрошенную информацию в ExtremeCloud IQ — Site Engine, который использует ее для заполнения полей регистрации пользователей.
- Процесс регистрации завершен, доступ к сети предоставлен.
- Слово «Facebook» добавлено к имени пользователя, чтобы вы могли легко найти регистрацию в Facebook на веб-странице администрирования регистрации.

Особые соображения по развертыванию
Перед настройкой регистрации в Facebook прочитайте следующие рекомендации по развертыванию.
Беспроводные клиенты
Чтобы обеспечить доступ к вашей сети через беспроводное соединение, создайте запись хоста L7 для незарегистрированной роли на вашем беспроводном контроллере для facebook.com . Этот домен может быть изменен и зависит от местоположения.
Сети, использующие DNS-прокси
madcapsoftware.com/Schemas/MadCap.xsd»> Регистрация в Facebook для сетей, перенаправляющих HTTP-трафик на авторизованный портал с использованием DNS-прокси, требует дополнительной настройки.Чтобы регистрация Facebook правильно работала с прокси-сервером DNS, все доменов/URL-адресов, необходимых для правильной загрузки веб-страницы Facebook, должны быть добавлены в раздел «Разрешенные URL-адреса/разрешенные домены» конфигурации авторизованного портала. В противном случае механизм ExtremeControl разрешает DNS-запросы для этих компонентов на IP-адрес механизма ExtremeControl, что приводит к неправильной загрузке страницы.
По состоянию на 26 июля 2014 г. необходимо добавить следующие домены, чтобы регистрация в Facebook работала с DNS-прокси. Эти домены могут изменяться в зависимости от местоположения.
com/Schemas/MadCap.xsd»> Facebook.com
fbstatic-a.akamaihd.net
fbcdn-profile-a.akamaihd.net
fbcdn-photos-c-a.akamaihd.net
Для получения информации по связанным разделам справки:
- Конфигурация портала
Node.js REST API Вход через Facebook. Быстрая регистрация пользователей и вход в систему… | by Ivan Vasiljevic
Быстрая и простая регистрация пользователей и вход в систему — важная часть разработки нового приложения. Не так давно регистрационные формы были обязательными, и зачастую они не очень нравились пользователям.
Эти формы требовали от пользователей ручного заполнения данных, иногда 10 и более полей ввода, и не каждый пользователь хотел тратить на это свое драгоценное время. Из-за этого многие веб-приложения потеряли потенциальных пользователей. Кроме того, у нас были формы входа, в которых пользователи должны были вводить свои имена пользователей/адреса электронной почты и пароли. Часто пользователи забывали свои пароли и не утруждали себя процессом восстановления пароля, потому что считали его утомительным. Итак, наше новое и блестящее приложение снова потеряет своих пользователей.
В настоящее время у нас есть гораздо лучший способ регистрации и входа пользователей в наши приложения. Теперь мы можем позволить пользователям регистрироваться, используя их учетную запись в социальной сети, которая у них обычно есть. В этом уроке мы позволим пользователям регистрироваться и входить в систему со своими учетными записями Facebook . Итак, если пользователи хотят создать новую учетную запись в нашем приложении, им нужно всего лишь нажать одну кнопку, предоставленную нашим приложением, а затем просто подтвердить доступ к своим данным на Facebook .
Точно так же вход в систему осуществляется одним нажатием кнопки от наших пользователей, но на этот раз даже не нужно разрешать доступ к данным. Ни пароля, ни имени пользователя, только одно нажатие кнопки 🙂 Это так просто.
В этом руководстве мы интегрируем аутентификацию Facebook в REST API, созданный с использованием Express.js . На стороне сервера мы будем использовать MongoDB в качестве базы данных, Node.js и Express.js . На стороне внешнего интерфейса мы реализуем простое приложение, которое позволит нам продемонстрировать весь рабочий процесс регистрации и входа в систему.
OAuth — это открытый стандарт для распределенной аутентификации и авторизации. Стандарт был разработан Twitter в 2006 году, и он обычно используется пользователями Интернета как способ авторизации веб-сайтов или приложений для доступа к своей информации на других веб-сайтах без предоставления им паролей к своим учетным записям.
Он используется многими известными компаниями, такими как Google , Twitter , Facebook и Microsoft . Полный список поставщиков OAuth можно найти по этой ссылке.
Что это означает для нашего приложения? Это означает, что пользователи могут зарегистрироваться и использовать его без ввода каких-либо данных в нашу регистрационную форму. Им просто нужно авторизовать приложение для доступа к своим данным на выбранном OAuth , и они готовы его использовать. Всего один клик. Разве это не удивительно? Кроме того, преимущество безопасности при таком входе в систему заключается в том, что пользователям не нужно запоминать пароли для нашего приложения, и нам не нужно хранить эти пароли. Это также предотвращает дыры в безопасности, вызванные повторным использованием пароля и ненадлежащим хранением паролей.
В этом разделе мы опишем процесс аутентификации Facebook . В то время как в нашем случае мы будем использовать клиентское приложение, написанное на Angular 2 и серверный REST API, написанный на Express.
js . Аналогичный процесс можно применить для любого одностраничного приложения (SPA) и серверной части REST API.
Когда пользователи захотят зарегистрироваться в нашем приложении, они нажмут «Зарегистрироваться с помощью Facebook ». При нажатии кнопки наше клиентское приложение запросит токен доступа от Facebook . Затем пользователю будет представлен диалог, позволяющий приложению получить доступ к некоторым из их Данные Facebook . Если пользователь даст свое разрешение, наше клиентское приложение получит в ответ токен доступа Facebook . На данный момент мы можем получить доступ к пользовательским данным из клиентского приложения, но учетная запись еще не создана на нашем бэкэнде. Чтобы создать новую учетную запись пользователя, наше клиентское приложение отправляет запрос на наш сервер с токеном доступа Facebook . Серверной части необходимо проверить токен доступа Facebook , поэтому он отправляет запрос на проверку непосредственно на Фейсбук .
Если токен Facebook действителен, сервер Facebook отправит данные пользователя обратно в наше приложение. Получив эти данные, внутренний сервер проверил правильность учетных данных пользователя и создаст профиль пользователя в нашем приложении с данными, полученными от Facebook . После этого серверной части необходимо создать веб-токен JSON (JWT) , который будет использоваться для идентификации пользователя. Затем этот токен отправляется в ответ клиентскому приложению. Клиентское приложение получит JWT и сохраните его для дальнейшего использования. Каждый запрос, отправляемый на внутренний сервер, должен содержать JWT , который однозначно идентифицирует пользователя. Описанный поток показан на рисунке 1.
Процесс входа пользователя аналогичен, поэтому мы не будем его подробно описывать. В процессе входа в систему пользователям не нужно разрешать приложению доступ к своим данным Facebook , и серверная часть не будет использовать данные Facebook для создания нового пользователя, а вместо этого обновит данные профиля пользователя на нашем сервере.
В следующих разделах мы рассмотрим процесс создания демо-приложения, чтобы проиллюстрировать то, что мы только что описали.
Чтобы пользователи могли входить в наше приложение со своими учетными записями Facebook , нам необходимо создать приложение на странице разработчиков Facebook . Это необходимый шаг для получения идентификатора приложения и секретного кода приложения, необходимого для всей будущей связи между нашим приложением и Фейсбук . Facebook предоставляет хорошо написанное руководство, которое можно найти здесь. После завершения обучения у нас должен быть идентификатор приложения и секретный код приложения, как показано на рисунке 2.
Рисунок 2. Изображение созданного приложения Facebook на панели инструментов После того, как мы создали наше приложение, нам нужно добавить несколько доменов приложений. Это можно сделать на странице приложения, через пункт меню настроек.
В поле App Domains просто для целей разработки мы добавим локальный хост . Когда наше приложение будет готово к выпуску, нам нужно будет заменить его реальным доменом приложения.
В этом разделе мы создадим клиентское приложение в Angular 2 . Приложение продемонстрирует, как реализовать авторизацию Facebook в Angular 2 . В качестве начального проекта мы будем использовать проект, подробно описанный в нашем предыдущем сообщении в блоге.
Код клиентского приложения можно найти в каталоге внешнего интерфейса на Гитхаб .
Нам потребуется добавить две дополнительные библиотеки: bootstrap-social и angular2-jwt :
npm install bootstrap-social angular2-jwt — сохранить
Bootstrap-social — небольшая библиотека с хорошо продуманными социальными кнопками которые сделаны на чистом CSS. Мы будем использовать его для создания красивой кнопки входа в Facebook .
Вторая библиотека, angular2-jwt , используется для автоматического присоединения JWT к заголовку авторизации при отправке HTTP-запросов из 9Приложение 0305 Angular 2 . С его помощью мы легко будем отправлять идентификаторы наших пользователей при каждом запросе. Для связи с Facebook мы будем использовать официальный JavaScript SDK . JavaScript SDK недоступен через npm , поэтому нам придется добавить скрипт в index.html :
Каждый раз, когда пользователь открывает наше приложение, он загружает Facebook JavaScript SDK .
Служба поддержки пользователей
Для связи с Facebook и наш внутренний сервер мы создадим сервис Angular 2 . Служба будет отвечать за:
- Использование профилей Facebook для регистрации пользователей
- Вход пользователей с помощью профиля Facebook
- Выход пользователей из системы
- Проверка того, вошли ли пользователи в систему сервис может быть создан с помощью команды Angular CLI :
ng g сервисный пользователь
Код службы:
В конструкторе службы мы инициализируем библиотеку, которая используется для связи с Facebook .
Самая важная часть здесь — заменить строку YOUR-APP-ID-HERE на идентификатор приложения, которое мы создали на Facebook . Нам нужно использовать один и тот же идентификатор на внешнем и внутреннем интерфейсе. Когда мы получим токен доступа во внешнем интерфейсе, этот токен доступа будет действителен для нашего приложения, зарегистрированного на Facebook 9.0306 . Если серверная часть имеет другой идентификатор приложения и попытается использовать доступ к токену, отправленному внешним интерфейсом, произойдет сбой.
Следующий метод в службе fbLogin . В fbLogin мы пытаемся получить данные пользователя, используя FB.login . FB.login откроет диалоговое окно входа в систему Facebook , если пользователь не вошел в систему, или диалоговое окно с просьбой разрешить приложению использовать данные пользователя, если пользователь ранее не использовал наше приложение. Ответ от FB.login содержит информацию о том, вошел ли пользователь в систему и разрешил ли он нашему приложению доступ к своим данным.
С этой информацией мы вызываем серверную часть для входа в приложение. Если нам удастся залогинить пользователя в наш бэкэнд, мы получим токен в ответ в заголовке x-auth-token . Токен будет сохранен для последующего использования в локальном хранилище. Один и тот же токен должен отправляться на сервер в каждом запросе, и он используется для идентификации текущего пользователя.
Следующий метод, метод logout , довольно прост. Он удаляет токен из локального хранилища браузера. После этого пользователь выходит из системы.
Метод getCurrentUser используется для получения текущих пользовательских данных с сервера.
Guards
Распространенной задачей при разработке любого приложения является определение того, что пользователи могут видеть, а что нет. Angular 2 имеет для этого встроенную функцию — навигационные щитки. Мы можем использовать четыре разных типа защиты:
- CanActivate — решает, можно ли активировать маршрут
- CanActivatechild — решает, может ли детские маршруты.

- CanLoad — решает, может ли модуль загружаться отложенно
В этом примере мы хотим показать страницу входа, когда пользователь не вошел в систему, и страницу панели инструментов, когда они есть. Для этого мы реализуем две защиты:
- AuthGuard — Проверить, вошел ли пользователь в систему
- AnonymousGuard — Проверить, не вошел ли пользователь в систему Эта проверка будет выполняться с использованием UserService и метода
isLoggedIn. Если пользователь вошел в систему, мы разрешим обещание и разрешим маршрутизатору перейти на защищенную страницу. Если пользователь не вошел в систему, мы перенаправим его на страницу приветствия.AnonymousGuard
AnonymousGuard используется для проверки того, не вошел ли пользователь в систему. Эта проверка, опять же, выполняется с помощью UserService и метода
isLoggedIn. Если пользователь не вошел в систему, мы разрешим обещание и разрешим маршрутизатору перейти на защищенную страницу.
Если пользователь вошел в систему, мы переместим его на страницу панели инструментов.Страницы
В этом разделе мы покажем все страницы, которые мы создали для этого демонстрационного приложения. Он состоит из двух страниц: страницы приветствия и страницы панели инструментов. Страница приветствия используется как целевая страница и содержит Кнопка входа в Facebook . Если пользователь вошел в систему и попытается получить доступ к демонстрационной странице, он будет автоматически перенаправлен на страницу панели инструментов. Страница панели инструментов отображается, когда пользователь вошел в систему. На самой странице отображается информация электронной почты из сведений о пользователе. Если анонимный пользователь попытается получить доступ к странице панели инструментов, он будет автоматически перенаправлен на страницу приветствия Guard. Итак, давайте начнем.
Страница входа
Страница входа может быть создана с помощью Angular CLI 9Команда 0306:
ng g component login
Эта команда создаст файлы шаблона, css и компонентов для нашей страницы входа в новую папку, которая называется login.
В login.component.ts мы добавим только один метод, fbLogin, который будет привязан к кнопке входа Facebook .Как выполняется авторизация Facebook ? Очень просто, мы вызываем метод
fbLoginиз UserService . Пользовательская служба 9Метод 0306 возвращает Promise . Если пользователь аутентифицирован с помощью Facebook , мы обработаем это в методе, перейдя на страницу панели инструментов.Шаблон страницы входа довольно прост, его можно найти в login.component.html .
Самый интересный элемент страницы —
. Событие щелчка элементаaпривязано кfbLoginиз Компонент входа . Поэтому, когда пользователь нажимает на ссылку, будет вызываться методfbLogin.Страница панели инструментов
Чтобы создать страницу панели инструментов, мы можем использовать команду Angular CLI :
панель инструментов ng g
Эта команда создаст файлы шаблона, css и компонентов для нашей страницы панели инструментов в новой папке.
называется приборной панелью. В dashboard.component.ts мы реализуем две вещи. При инициализации компонента мы загрузим информацию о пользователе. Это делается в Метод ngInit. Информация о пользователе загружается путем вызова метода UserServicegetCurrentUser. Информация о пользователе будет помещена в поле компонентаcurrentUser, а оттуда она будет использоваться в шаблоне для представления информации о пользователе.На этой странице мы добавим метод
logout. Этот метод будет использоваться для выхода из системы текущего пользователя с использованием методаlogoutиз UserService . Если пользователи успешно вышли из системы, они будут перенаправлены на приветственный маршрут.Шаблон страницы информационной панели довольно прост, его можно найти по адресу dashboard.component.html .
Итак, что у нас здесь? Во-первых, у нас есть панель навигации, которая содержит кнопку Logout.
Когда пользователь нажмет на нее, будет выполнен метод logoutиз компонента панели управления. В центре страницы мы показываем адрес электронной почты текущего пользователя:
Электронный адрес текущего пользователя: {{ currentUser.email }}
Маршруты
У нас будет два маршрута. Компонент маршрутизатора можно найти в app.routing.module.ts . Итак, у нас будет массив с маршрутами:
Каждый объект JSON — это один маршрут. Таким образом, для приветственного пути мы будем использовать LoginComponent , и этот путь будет доступен только в том случае, если пользователь не вошел в систему. вошёл в систему. Маршрут по умолчанию, когда пользователь загружает наш сайт без указания пути, будет перенаправлен на страницу приветствия. Поэтому, если пользователь вводит http://localhost:3000, он будет перенаправлен на страницу приветствия.
AppModule
Последнее, что мы покажем во внешнем интерфейсе, будет в app.
module.ts . Для связи с нашим бэкендом, как вы могли заметить, мы используем не модуль Angular 2 Http , а AuthHttp . Почему? Потому что AuthHttp — это класс из angular2-jwt . Мы используем его для автоматического прикрепления веб-токена JSON (JWT) в качестве заголовка авторизации при выполнении HTTP-запросов из приложения Angular 2 . Мы решили, что в качестве имени заголовка мы хотим использовать x-auth-токенимя.noJwtErrorимеет значение true, поэтому мы можем использовать AuthHttp для связи с серверной частью, даже если пользователь не вошел в систему.tokenGetter— это функция, используемая для поиска токена текущего пользователя. В нашем случае это локальное хранилище, а токен хранится с ключомid_token.В этой главе мы опишем наш сервер. Мы решили, что хотим создать наше серверное приложение на основе Node.js 9.0306 и Express.js .
Мы создадим REST API, и пользователь должен иметь возможность войти в систему со своей учетной записью Facebook . В конце у нас будет полнофункциональное серверное приложение, в котором пользователь сможет создать новую учетную запись и войти в нее со своей учетной записью Facebook .Зависимости
Для создания REST API мы будем использовать Express.js . Разбор тела входящего запроса в промежуточном программном обеспечении до наших обработчиков будет выполнен к анализатор тела . Обработка JWT будет выполняться express-jwt и jsonwebtoken . Аутентификация будет выполняться с помощью паспорта , а для аутентификации Facebook мы будем использовать библиотеку паспорт-фейсбук-токен . В качестве базы данных мы будем использовать MongoDB и mongoose для связи с базой данных. И последнее, но не менее важное: нам нужно включить CORS на нашем сервере, и для этого мы будем использовать cors 9.
0306 библиотека.Модель базы данных
Мы сохраним информацию о пользователе в базе данных. В качестве базы будем использовать MongoDB . Мы не хотим связываться с базой данных напрямую, поэтому будем использовать mongoose . На официальной странице проекта мы можем найти определение mongoose :
Инструмент объектного моделирования MongoDB, предназначенный для работы в асинхронной среде. Mongoose предоставляет простое решение на основе схемы для моделирования данных вашего приложения. Он включает в себя встроенное приведение типов, проверку, построение запросов, перехватчики бизнес-логики и многое другое.
У нас есть только один объект для моделирования, и это пользователь. Нас интересует только информация об электронной почте пользователя из его профиля Facebook , так что это единственное, что мы включим. Также мы сохраним токен доступа пользователя и идентификатор профиля Facebook .

Здесь интересно отметить, что, помещая
selectвfalseв объектеfacebookProvider, мы исключаем полеfacebookProviderв результате запросов по умолчанию. Чтобы получить пользователя сfacebookProvider, нам нужно явно указать в запросе, что мы хотим.В UserSchema мы должны добавить один статический метод, который будет использоваться для создания нового пользователя, если он еще не существует. Это метод
upsertFbUser.В этом методе мы пытаемся, во-первых, найти пользователя по его идентификатору профиля Facebook . Если мы найдем пользователя с совпадающим идентификатором профиля Facebook , это означает, что у него уже есть учетная запись, связанная с его Профиль Facebook . В этом случае нам не нужно ничего делать здесь. Если мы не нашли пользователя, мы создадим нового пользователя и сохраним его в базе данных.
Конфигурация паспорта
Как уже упоминалось, для аутентификации мы будем использовать библиотеку Passport .
Passport — промежуточное ПО аутентификации для Node.js . Он чрезвычайно гибкий и модульный. Passport поддерживает множество механизмов аутентификации, которые называются стратегиями , так что есть локальная стратегия, для входа с логином и паролем, стратегия Facebook , стратегия Twitter и т. д. Список всех стратегий можно найти на официальном сайте.Мы будем использовать passport-facebook-token , стратегию Passport для аутентификации с помощью токенов доступа Facebook с использованием OAuth 2.0 API. Существует также библиотека паспорт-facebook, которая содержит стратегию аутентификации Facebook , но эта библиотека не подходит для REST API. Лучше подходит для Express.js приложений, которые используются для серверного рендеринга.
Код для инициализации Passport со стратегией Facebook выглядит следующим образом:
Для того, чтобы инициализировать стратегию, нам нужно предоставить идентификатор клиента приложения Facebook и секрет клиента.
Эти две части информации будут использоваться для идентификации нашего приложения. Мы также должны предоставить функцию обратного вызова для проверки. В нашем случае эта функция вызывает статический метод upserFbUserиз модели User , которая проверит, существует ли данный пользователь, и если нет, то создаст его.Обработка токенов
JWT , как объяснено в Википедии :
JWT — это открытый стандарт на основе JSON (RFC 7519) для создания токенов доступа, которые утверждают некоторое количество утверждений. Например, сервер может сгенерировать токен с утверждением «вошел в систему как администратор» и предоставить его клиенту. Затем клиент может использовать этот токен, чтобы доказать, что он вошел в систему как администратор.
В нашем примере мы только сохраним идентификатор пользователя в токене, подпишем его и отправим во внешний интерфейс. Для создания JWT мы будем использовать библиотеку jsonwebtoken .

В функции
createTokenмы получаем пользователя (auth) в качестве аргумента функции и используем идентификатор для создания токена. В этом случае мы используем my-secret в качестве закрытого ключа; в производстве мы должны либо секрет для алгоритмов HMAC , либо закодированный PEM закрытый ключ для RSA и ECDSA , как указано в документации библиотеки. ФункцияgenerateTokenимеет запрос и ответ, поэтому у нее есть доступ к текущему пользователю. Итак, мы сгенерируем токен и поместим его в объект запроса.sendToken— это функция, которая берет токен из объекта запроса и помещает его в заголовок.Для проверки JWT в каждом внешнем запросе мы будем использовать express-jwt . Как мы используем экспресс-jwt ? Если токен действителен,
req.authбудет установлен с декодированным объектом JSON , который будет использоваться более поздним промежуточным программным обеспечением для авторизации и управления доступом.
Функция authenticationделает именно это:Секрет свойства должен иметь то же значение, что и в функции
createToken. УстановивrequestProperty, мы получаем измененное имя свойства на имя, которое мы поместим в декодированный объект JSON . НедвижимостьgetToken— это функция, которая используется для извлечения токена из запроса, и в данном случае токен находится в заголовкеx-auth-token.Поток аутентификации
Итак, теперь у нас есть все строительные блоки. Мы должны соединить все наши блоки в системе, которая будет выполнять аутентификацию Facebook . Для аутентификации мы создадим конечную точку REST с путем: http://localhost:3000/api/v1/auth/facebook. Мы также создадим конечную точку, из которой мы сможем получить текущего аутентифицированного пользователя: http://localhost:3000/api/v1/auth/me.
Для аутентификации мы создаем маршрут для метода POST HTTP. Когда пользователь вызывает эту конечную точку, мы сначала используем Passport для аутентификации пользователя.
После этого добавляем промежуточное ПО, в котором проверяем, есть ли в системе пользователь с данной учетной записью Facebook . Если он не найден, мы отправляем ответ с кодом состояния HTTP 401. Если пользователь найден, мы создаем объект auth, в который помещаем только идентификатор пользователя. Следующее промежуточное ПО предназначено для создания токена, а после этого мы используем промежуточное ПО для отправки этого токена.
Чтобы получить текущего пользователя, нам сначала нужно создать промежуточное ПО, которое найдет пользователя в базе данных. Это будет сделано с помощью функцииgetCurrentUser. ФункцияgetOneберет найденного пользователя и отправляет его в качестве ответа. Конечная точка для получения текущего пользователя, в основном:- Аутентификация пользователя и поиск его идентификатора
- Поиск текущего пользователя в базе данных
- Возврат текущего пользователя в качестве ответа
CORS
В настоящее время у нас есть два приложения, 9Приложение 0305 Angular 2 и приложение Node.
js/Express.js , размещенные на двух серверах. Если мы не настроим CORS , наше приложение Angular 2 не сможет взаимодействовать с серверной частью. Чтобы включить CORS на нашем бэкэнде, мы будем использовать библиотеку Node.js cors .Установив для источника значение true, мы разрешили любому источнику доступ к ресурсу. Методы
используются для контроля Access-Control-Allow-Methods CORS , и с помощью этой строки мы разрешили почти все HTTP-методы. С помощью свойстваучетных данныхмы управляем заголовком Access-Control-Allow-Credentials CORS . Последнее и очень важное свойство,posedHeaders, используется для указания того, какие заголовки могут быть представлены как часть ответа. Если бы мы не установили это свойство, клиентская библиотека проигнорировала бы наш пользовательский заголовок с токеном пользователя.HTTPS — убедитесь, что вы его используете
Вы ДОЛЖНЫ использовать HTTPS в рабочей среде!
В этой демонстрации мы будем работать на нашей локальной машине и НЕ будем использовать HTTPS, но вы ДОЛЖНЫ использовать HTTPS в рабочей среде.
Без него все механизмы аутентификации API скомпрометированы.Вы предупреждены.
Поздравляем! Теперь у вас есть полнофункциональный пример аутентификации Facebook . Мы создали приложение Angular 2 , которое может взаимодействовать с REST API и аутентифицировать пользователя с помощью Аккаунт Facebook . Мы также создали приложение Node.js/Express.js , которое предоставляет REST API для этой цели.
Полный исходный код этого проекта можно найти в следующем репозитории GitHub :
GenFirst/angular2-node-fb-login
angular2-node-fb-login — демонстрационное приложение, показывающее, как включить Facebook войдите в систему с Angular 2 на веб-интерфейсе и Node…
github.com
Надеюсь, вам понравился этот урок и вы узнали кое-что. Очевидно, что еще многое предстоит сделать, но это должно помочь вам начать.
Если у вас есть какие-либо вопросы или проблемы с тем, как заставить это работать, не стесняйтесь обращаться ко мне по Twitter @robince885 или в комментариях ниже.



Как очистить данные:
Для выхода в сеть используйте стандартное браузерное приложение (например, Google Chrome).
инструкции ниже).




окно, в котором вы можете изменить поля портала регистрации. При регистрации в Facebook используются только поля «Имя», «Фамилия» и «Адрес электронной почты», а также параметр «Показать политику допустимого использования» (AUP). Все остальные поля относятся только к регистрации обычного гостя. Если выбран параметр Display AUP, авторизованный портал проверяет, что AUP был подтвержден, прежде чем перенаправить пользователя на Facebook.



Если пользователь вошел в систему, мы переместим его на страницу панели инструментов.
В login.component.ts мы добавим только один метод,
называется приборной панелью. В dashboard.component.ts мы реализуем две вещи. При инициализации компонента мы загрузим информацию о пользователе. Это делается в
Когда пользователь нажмет на нее, будет выполнен метод
module.ts . Для связи с нашим бэкендом, как вы могли заметить, мы используем не модуль Angular 2 Http , а AuthHttp . Почему? Потому что AuthHttp — это класс из angular2-jwt . Мы используем его для автоматического прикрепления веб-токена JSON (JWT) в качестве заголовка авторизации при выполнении HTTP-запросов из приложения Angular 2 . Мы решили, что в качестве имени заголовка мы хотим использовать
Мы создадим REST API, и пользователь должен иметь возможность войти в систему со своей учетной записью Facebook . В конце у нас будет полнофункциональное серверное приложение, в котором пользователь сможет создать новую учетную запись и войти в нее со своей учетной записью Facebook .
0306 библиотека.
Passport — промежуточное ПО аутентификации для Node.js . Он чрезвычайно гибкий и модульный. Passport поддерживает множество механизмов аутентификации, которые называются стратегиями , так что есть локальная стратегия, для входа с логином и паролем, стратегия Facebook , стратегия Twitter и т. д. Список всех стратегий можно найти на официальном сайте.
Эти две части информации будут использоваться для идентификации нашего приложения. Мы также должны предоставить функцию обратного вызова для проверки. В нашем случае эта функция вызывает статический метод 
Функция
После этого добавляем промежуточное ПО, в котором проверяем, есть ли в системе пользователь с данной учетной записью Facebook . Если он не найден, мы отправляем ответ с кодом состояния HTTP 401. Если пользователь найден, мы создаем объект
js/Express.js , размещенные на двух серверах. Если мы не настроим CORS , наше приложение Angular 2 не сможет взаимодействовать с серверной частью. Чтобы включить CORS на нашем бэкэнде, мы будем использовать библиотеку Node.js cors .
Без него все механизмы аутентификации API скомпрометированы.