LinkedIn/Twitter/Facebook как использование OAuth и OpenId

Во-первых, я понимаю, что OpenId предназначен для аутентификации, а OAuth для авторизации, и в отличие от других вопросов на сайте, я не спрашиваю, для чего следует использовать, но может ли кто-нибудь посоветовать решение для моей проблемы.

Я хочу разрешить пользователям входить на мой сайт через свою учетную запись LinkedIn/Twitter/Facebook после входа в систему через LinkedIn, они также могут авторизовать свою учетную запись Twitter и Facebook в качестве дополнительного метода входа. Это позволит пользователю пройти аутентификацию через любой из трех, но в конечном итоге их учетная запись пользователя на моем сайте станет конечным результатом.

Я также хочу использовать предоставленную им авторизацию, чтобы получить основные данные пользователя (профиль pic/name и т.д.) и опубликовать обновления статуса.

Я не хочу просить пользователя войти в свою учетную запись через openId, а затем снова авторизовать ту же учетную запись через oauth, чтобы мой сайт мог публиковать их в своем фиде услуг и должен сделать это для каждого из трех сервисов.

Любые идеи или проблемы в этой проблеме?

Ответы

Ответ 2

Если вы используете ASP.NET MVC, DotNetOpenAuth - отличное решение для поддержки сайтов OpenID/OAuth. StackOverflow использует его, и они довольно разборчивы для кода, который они используют на сайте.

Интеграция, если OpenID с DotNetOpenAuth довольно прост. Я не пробовал OAuth, но я не ожидаю, что это будет менее качественным.

К сожалению, Facebook не поддерживает OpenID/OAuth, поэтому вам нужно использовать другое решение для него. Я использую Clarity Consulting Facebook Developer Toolkit. Он работает, хотя у меня есть некоторые жалобы на качество кода; К сожалению, я еще ничего не нашел. (Примечание: если кто-то знает лучшую альтернативу, непременно сообщите мне)

Базовая интеграция Facebook Connect с Facebook Developer Toolkit также относительно проста. Тем не менее, их объектная модель несколько испорчена из-за их попытки оставаться как можно ближе к API-интерфейсам Facebook, поэтому шаблоны API-протокола HTTP многократно истекают кровью. Тем не менее, это делает работу.

Обновление: Теперь, когда Facebook объявил, что они будут поддерживать OAuth 2.0, DotNetOpenAuth может оказаться лучшим решением.

Ответ 3

Я не хочу просить пользователя войти в свою учетную запись через openId, а затем снова авторизовать ту же учетную запись через oauth, чтобы мой сайт мог публиковать их в своем фиде услуг и должен сделать это для каждого из трех сервисов.

Я боюсь, вам придется подключать учетную запись пользователя к каждой из трех служб по отдельности. Какую платформу вы используете для создания своего приложения? Если это Ruby, то драгоценный камень, подобный OmniAuth, выглядит многообещающим.