At a high level you might want to invest some time in thinking how to architect the identity layer on your application. How to abstract all the different authentication providers. One way of doing it is by leveraging a claims based identity approach. Instead of embedding all the authentication/authorization logic on the application, you have this layer in which you convert user attributes coming from the authentication provider to a common representation across them. This is called "claims-based identity"
You can download a free book that talks about this approach from Microsoft A Guide to Claims-Based Identity and Access Control (2nd Edition).
On a more concrete level, implementation will vary depend on what platform/language you are using and the libraries available. If you want to integrate with social identity providers, typically the protocol used is OAuth2 (Google, Facebook, LiveID) or OAuth1.0a (Twitter). In NET you have libraries like DotNetOpenAuth that will implement those protocols. If you want to integrate with something like ADFS (Active Directory Federation Service), the protocol used is WS-Federation with SAML Tokens or SAML 2.0 protocol. In NET the library of chose is Windows Identity Foundation (WIF). Mixing both in the same application, is not easy. That's what I meant by investing in a common abstraction layer.
Finally, there are cloud services that might help. These are brokers between your app and the identity providers. From the app point of view, you implement one library: