Внедрение социального входа без участия третьей стороны с использованием openid-selector

Я просмотрел примерно 50 вопросов на этом сайте, но ни один из них не представляет собой решение, которое либо актуально, либо не требует использования третьей части pluggin (я хочу сохранить контроль над информацией и не давать другим людям доступ к информации, которую я получаю), или это завершено. Я рискну разместить его и скрестить пальцы.

Я видел больше, но вот некоторые из них я смотрел:

Итак, я ищу, чтобы на моем сайте были Facebook, Google и Twitter как параметры входа. (По-видимому, это 80% людей предпочитают метод социального входа).
Если я перейду в wiki.openid.net, какой пакет вы посоветуете мне использовать в PHP для легкой реализации? Какой из них вы использовали в прошлом?

Кроме того, если возможно, можете ли вы дать объяснения о том, как реализовать рекомендуемую библиотеку? т.е.

  • Скачайте его, поместите на свой сайт,
  • затем введите openID для моего сайта,
  • затем используйте http://code.google.com/p/openid-selector/ для дисплей...

Правильно ли это? Я понятия не имею...

В принципе, шаг за шагом руководство было бы удивительным. Я уверен, что любой, кто найдет время, чтобы ответить на это, получит массу очков, это горячая тема.

Спасибо за помощь.

Ответы

Ответ 1

Итак, вы хотите внедрить логин Google и Facebook/Twitter без использования стороннего сервиса. Это означает, что вам нужно внедрить логин OpenID (для Google) и OAuth (для Facebook/Twitter).

Первый OpenID. Вы можете загрузить LightOpenID приятный легкий класс OpenID для PHP. Довольно легко реализовать. Некоторые примеры использования этого класса.

// Set up your OpenID object
$openid = new LightOpenID('http://yourdomain.com');
$openid->returnUrl = 'http://yourdomain.com/after/login/user/goes/here';
$openid->identity = 'https://www.google.com/accounts/o8/id'; // OpenID provider URL
$openid->required = array('namePerson/friendly', 'contact/email');

// Step 1: Redirect the user to the OpenID provider
if (!$openid->mode) // If not authenticated
    header('Location: ' . $openid->authUrl()); // Redirect to provider

// Step 2: User returned, sign the user into our application
if ($openid->validate()) { 
    // OpenID authentication is successful
    // Sign in the user and read requested attributes
    $attrArray = $openid->getAttributes();
}

Это должно начаться с части OpenID. Селектор OpenID - это не более чем селектор для URL-адреса идентификации.

Затем внедряем знак OAuth для поддержки входа в Facebook и Twitter. Существует довольно подробная документация о том, как реализовать поддержку входа в Facebook и Twitter. Для Facebook вы должны прочитать сайт разработчика при аутентификации, это не слишком сложно. Twitter использует тот же протокол, а также имеет хорошую документацию по этой теме.

Если вы не хотите его реализовывать самостоятельно, взгляните на библиотеки OAuth, которые вы можете включить в свое приложение, например socialoauth (поддерживает оба) или twitteroauth (поддерживает твиттер). Google поможет вам найти гораздо больше таких библиотек.

Просто начните реализацию с библиотеки, прочитайте код, комментарии и документы и задайте вопросы по StackOverflow, если вы застряли.:)

Ответ 2

Этот HybirdAuth кажется еще более крутым:

Выполните: http://hybridauth.sourceforge.net/

Лицензируется как GPL и MIT. Делите, если кто-то из вас знает что-нибудь лучше.

Ответ 3

Также проверьте этот социальный логин OneAll. Его удивительный и простой в использовании. Поддержка многих поставщиков. Здесь ссылка http://www.oneall.com/