Аккуратно интегрировать вход через Facebook, Google, Twitter и т. д. в CakePHP?

Резюме вопроса:
Я хотел бы создать систему регистрации и входа на основе CakePHP, предлагающую несколько различных шлюзов, таких как OpenID, Facebook, Twitter и так далее. Я хотел бы, чтобы система позволяла пользователю связывать несколько форм идентификации со своей учетной записью.

После долгих поисков я не нашел ничего, что допускало бы более одного метода авторизации. Система авторизации Cake действительно усложняет дело, поэтому использование учебника для общего PHP не очень эффективно. У кого-нибудь есть решение или где-то я могу начать?

Пример:
Чтобы привести простой пример, глядя на сеть StackExchange: вы можете войти/зарегистрироваться, используя учетную запись биржи стека, Google, Yahoo, Facebook или OpenID. После входа в систему вы можете добавить больше этих методов в свою учетную запись, чтобы вас узнавали множеством способов. Я понимаю, что StackExchange, вероятно, не написан на Cake, но он служит примером.

Спасибо!



Исходный вопрос

Вот сенсация: я хотел бы интегрировать простую систему регистрации/входа для каждой из основных служб, предлагающих oauth/openid в CakePHP.

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

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

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

Как мне это сделать?

Спасибо,

Джеймс

9
задан xtraorange 20 June 2012 в 23:41
поделиться