Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Леонид Каганов ([info]lleokaganov)
@ 2016-08-17 20:50:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:ахтунг, больше ада, программирование

по вашим просьбам поправил Биноник и некоторые глюки движка
это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/17.html

Имею сказать следующее: я КРАЙНЕ не рекомендую использовать для авторизации в движке Фейсбук. В крайнем случае пропишите в личной карточке родной логин-пароль на моем сайте. Почему? Дело в том, что Фейсбук — уникальное по мерзости и подлости учреждение, он постоянно придумывает всё новые и новые гадости, чтобы создать проблемы людям, которые осмелились что-то посещать на других сайтах.

Когда внешний сайт (например, мой) отправляет пользователя залогиниться через Фейсбук, сайт понятия не имеет, что это за человек, и никакие логины-пароли Фейсбука тоже на сайт не попадают по вполне понятным причинам безопасности. Авторизационная страница Фейсбука (и не только Фейсбука, так устроен любой трехсторонний авторизационный протокол) открывается в новом изолированном окне, там у пользователя происходит авторизационный секс со своим любимым Фейсбуком, а на сайт по итогу Фейсбук присылает некие идентификаторы — какие сам сочтет нужным. Обычно это линк на аккаунт, имя, фамилия, иногда email. Но email может быть не указан. А пользователей с именем Alex Smirnov я знаю семерых. Поэтому в качестве точного идентификатора сайту взять нечего, кроме линка на аккаунт. Мы полагаем, что уж линк-то на аккаунт ни одна соцсеть в своем уме менять не станет:

facebook.com/lleokaganov

Хрен там! Через год Фейсбук вдруг решает, что имена в линке — это лишнее и ненужное, а проще делать ссылку с номером аккаунта:

facebook.com/app_scoped_user_id/100001073866092

И начинает присылать после авторизации вот эти адовы номера. Что происходит на внешних сайтах? Мой сайт видит, что авторизовался некто невиданный прежде /app_scoped_user_id/100001073866092, и ему заводится новая учетная запись, которая не имеет никакого отношения к учетке /lleokaganov. Потому что догадаться, что там Фейсбук изменил, сайт не может никак. В результате всё, что было привязано к прошлой карточке (комменты, личная переписка, может даже подзамочный доступ) — всё теряется.

Но и это еще не всё!

Через год, когда все поматерились, перелогинились и привыкли к новой записи, Фейсбук решает, что он мало потрепал нервы, и надо гадить снова. И тогда он снова меняет строку представления, но не всю, а несколько цифр в серединке. В результате, скажем, товарищ Андрей, купив новый ноутбук, обнаруживает, что на его старом ноутбуке и на новом ноутбуке логины от Фейсбука становятся разные:

И это пиздец, который не лечится вообще никак, потому что Фейсбук гадит специально.

Проблема в моем движке в том, что движок уже создал вам новую учетку под измененное представление Фейсбука. И перенести изменившийся адрес Фейсбука в старую учетку невозможно без танцев с бубном, потому что две одинаковые учетки делать нельзя. Поэтому если же у вас случилось такое, что логин по Фейсбуку перестал вас узнавать на моем сайте, но вы человек мудрый, и когда-то вписывали родной логин-пароль для этого сайта (или хотя бы email, через который можно восстановить старую учетку), то алгоритм следующий:

1. Залогиниться Фейсбуком, чтобы попасть в ненужную новосозданную учетку. И там удалить из привязки соцсеть Фейсбук (красная иконка рядом со ссылкой. И больше пока не логиниться Фейсбуком!

2. Войти в свою старую учетку по логину-паролю и тоже удалить там сеть фейсбук. После чего Нажать «добавить соцсеть» и добавить Фейсбук. После этого новое представление Фейсбука пропишется в старой учетке, и после логина вы будете попадать снова в нее. Пока Фейсбук опять что-нибудь не подгадит.



это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/17.html