Como torná-lo extensível
Primeiro, observe que todas essas APIs usam o mesmo mecanismo para efetuar login. Todas elas usam OAuth para autenticação. Você precisa aproveitar isso começando com uma biblioteca geral do OAuth. Não use suas próprias bibliotecas para autenticação, pois elas serão inutilizáveis para outros provedores. Se você pegar o jeito do OAuth2, é muito fácil adicionar mais provedores.
Infelizmente, você precisa de dois deles, porque o twitter ainda não pulou na onda do OAuth2.
O OAuth precisa que você crie uma interface para a parte de autenticação. Os tokens serão trocados de servidor para servidor. Crie um ponto de entrada, capaz de lidar com toda a comunicação.
O token deve ser armazenado em uma tabela separada da sua conta, pois podem ser vários tokens e vários perfis vinculados. Alguns serviços oferecem dois tokens, um deles é um token de atualização.
Agora você cria uma interface que encapsula as outras funcionalidades necessárias. Pessoalmente, eu configuraria um serviço REST separado para isso. Dessa forma, você pode estender facilmente a autenticação para outros lugares.
Alguns serviços usam JSON para se comunicar, outros usam XML etc. Para o usuário inicial, você precisa unificar todos eles. Este é um processo bastante doloroso, mas é possível derivar alguns motivos comuns aqui.
Outro problema aqui é que nem todos os serviços oferecem a mesma funcionalidade. Isso pode significar que seus serviços não podem fornecer a API completa conforme você especificou. Você precisa ter uma estratégia aqui, que permita que o aplicativo faça o downgrade gracioso.
Isso garante que você pode adicionar novos fornecedores de terceiros com facilidade.
Problemas de token
Os tokens são limitados no tempo, portanto, você precisa de algumas tarefas cron, que podem verificar se o token ainda é utilizável; caso contrário, você deve excluí-lo. Você também pode atualizar um token por esse mecanismo.
Às vezes acontece que um usuário retrai o token. Esteja pronto para isso.
Armazenamento de dados
Se você possui esse design, precisa pensar nos dados necessários. Isso ocorre em parte da sua interface recém-criada. Crie algumas tabelas para isso e verifique se os dados são realmente recuperáveis. Alguns serviços não permitem que você pegue muitos dados. Você também deve levar em consideração que, quanto mais dados forem necessários, mais pesadas serão as mensagens de privacidade. Portanto, seja modesto em suas necessidades, caso contrário, os usuários não o usarão.
Para verificação extra, você pode armazenar os perfis em uma tabela separada, mas vinculada aos seus usuários. Isso fornecerá muito mais informações sobre alguém.
Verifique também as leis locais, para alguns dados, você precisa de precauções extras.
Última coisa:
não cometa a falha em não criar uma conta em seus próprios serviços. Se o usuário for banido do facebook, ele não poderá efetivamente fazer login no seu serviço. Esta é uma situação que você não deseja criar. Isso geralmente é esquecido.