Як зробити його розширюваним
Спочатку слід помітити, що всі ці програми використовують один і той же механізм для входу. Усі вони використовують OAuth для своєї автентифікації. Це потрібно використовувати, починаючи із загальної бібліотеки OAuth. Не використовуйте власні бібліотеки для аутентифікації, вони будуть непридатні для інших постачальників. Якщо ви отримаєте висіти на OAuth2, додати більше провайдерів досить просто.
На жаль, вам потрібно два з них, тому що ще не перескочив щебет OAuth2.
OAuth потребує вас, щоб створити інтерфейс для аутентифікаційної сторони. Токени будуть обмінятися сервером на сервер. Створіть одну точку входу, яка може обробляти все спілкування.
Маркер повинен зберігатися в окремій таблиці від вашого облікового запису, це тому, що їх може бути кілька маркерів і кілька пов'язаних профілів. Деякі сервіси надають вам два жетони, один з них - маркер оновлення.
Тепер ви розробляєте інтерфейс, який інкапсулює інші необхідні вам функції. Я особисто створив для цього окремий REST-сервіс. Таким чином ви можете легко поширити аутентифікацію на інші місця.
Деякі сервіси використовують JSON для спілкування, інші - для XML тощо. Для переднього користувача потрібно їх усіх уніфікувати. Це досить болісний процес, але тут можна отримати деякі загальні підстави.
Ще одна проблема тут полягає в тому, що не всі сервіси забезпечують однаковий функціонал. Це може означати, що ваші служби не можуть надати повний API, як ви вказали. Тут ви повинні мати стратегію, яка дозволяє програмі вишукано знижуватись.
Це все дозволить вам легко додати нових сторонніх постачальників.
Проблеми з токеном
Токени обмежені в часі, тому вам потрібно пара крон-завдань, яка може перевірити, чи маркер все-таки корисний, інакше вам доведеться його видалити. Ви також можете оновити маркер за допомогою цього механізму.
Іноді трапляється, що користувач відкликає маркер. Будьте готові до цього.
Зберігання даних
Якщо у вас є така конструкція, вам потрібно подумати про потрібні вам дані. Це частково випливає із щойно створеного інтерфейсу. Створіть для цього кілька таблиць і подивіться, чи дані фактично можна отримати. Деякі служби не дозволяють захопити багато даних. Також слід врахувати, що чим більше потрібних вам даних, тим важливішими стають повідомлення про конфіденційність. Тому будьте скромні у своїх потребах, інакше користувачі не користуватимуться ними.
Для додаткової перевірки ви можете зберігати профілі в окремій, але пов’язаній з вами таблиці, для користувачів. Це дасть вам набагато більше інформації про когось.
Також перевірте свої місцеві закони, для деяких даних вам потрібні додаткові заходи безпеки.
Останнє
Не робіть провини, коли ви не створюєте обліковий запис на власних послугах. Якщо користувачеві забороняють користуватися facebook, він фактично не зможе увійти у вашу послугу. Це ситуація, яку ви не хочете створювати. Це часто не помічається.