Как сделать его расширяемым
Сначала вы должны заметить, что все эти API используют один и тот же механизм для входа в систему. Все они используют OAuth для своей аутентификации. Это вам нужно использовать, начиная с общей библиотеки OAuth. Не используйте свои собственные библиотеки для аутентификации, они будут непригодны для других провайдеров. Если вы овладеете OAuth2, довольно легко добавить больше провайдеров.
К сожалению, вам нужно два из них, потому что твиттер до сих пор не перешагнул подножку OAuth2.
OAuth нужно, чтобы вы создали интерфейс для аутентифицирующей стороны. Токены будут обмениваться с сервера на сервер. Создайте одну точку входа, которая может обрабатывать все коммуникации.
Токены должны храниться в отдельной таблице от вашей учетной записи, потому что их может быть несколько токенов и несколько связанных профилей. Некоторые сервисы предоставляют вам два токена, один из них - токен обновления.
Теперь вы разрабатываете интерфейс, который включает в себя другие необходимые вам функции. Я бы лично для этого настроил отдельный REST-сервис. Таким образом, вы можете легко расширить аутентификацию в других местах.
Некоторые сервисы используют JSON для связи, другие используют XML и т. Д. Для основного пользователя вам необходимо объединить их все. Это довольно болезненный процесс, но здесь можно найти некоторые общие основания.
Другая проблема заключается в том, что не все сервисы предоставляют одинаковую функциональность. Это может означать, что ваши службы не могут предоставить полный API, как вы указали. Вы должны иметь стратегию, которая позволяет приложению корректно понижать рейтинг.
Все это позволит вам легко добавлять новых сторонних поставщиков.
Проблемы с токенами
Токены ограничены по времени, поэтому вам понадобится пара заданий cron, которые могут проверить, можно ли использовать токен, в противном случае вы должны удалить его. Вы также можете обновить токен с помощью этого механизма.
Иногда случается, что пользователь забирает токен. Будьте готовы к этому.
Хранилище данных
Если у вас есть этот дизайн, вам нужно подумать о данных, которые вам нужны. Это частично следует из вашего только что созданного интерфейса. Разработайте для этого несколько таблиц и посмотрите, можно ли получить данные. Некоторые сервисы не позволяют вам захватить много данных. Вы также должны принять во внимание, что чем больше данных вам нужно, тем больше становится сообщений о конфиденциальности. Так что будьте скромны в своих нуждах, иначе пользователи не будут его использовать.
Для дополнительной проверки вы можете хранить профили в отдельной, но связанной таблице для ваших пользователей. Это даст вам гораздо больше информации о ком-то.
Также проверьте ваши местные законы, для некоторых данных вам нужны дополнительные меры предосторожности.
Последнее, что
не стоит делать ошибку, если вы не создаете учетную запись на своих собственных услугах. Если пользователь будет забанен на Facebook, он фактически не сможет войти на ваш сервис. Это ситуация, которую вы не хотите создавать. Это часто упускается из виду.