2010-04-26 9 views

Antwort

16

UPDATE - Juni 2011 - Ich habe mit den omniauth gem vor kurzem, und ich denke, es ist eine bessere Lösung als mit dem in diesem vorgeschlagenen gems Antworten. Es funktioniert gut mit Devise und wird Ihnen alles geben, was Sie in einem Juwel brauchen. Ich habe eine Engine entwickelt, die Devise und Omniauth kombiniert und einen Controller für die Rückrufe hinzufügt. Ich habe ziemlich viele Änderungen für den Edelstein geplant und jetzt ich halte es nicht für ein stabiles Plugin, aber Sie können in der Lage sein, einen Teil des Codes in dem Edelsteine ​​wieder zu verwenden: https://github.com/charlotte-ruby/devise_omniauth_engine/blob/master/app/controllers/users/omniauth_callbacks_controller.rb


ich das vor kurzem bekam Arbeiten an Rails 3 (mit einigen Problemen mit OpenID). Ich habe kein vollständiges Arbeitsbeispiel, das Sie auf github betrachten können, aber hier ist was ich verwende ... alle haben Beispiele in den Readme-Dateien.

Facebook - fbgraph. Im Gegensatz zu Facebooker verwendet es die neueste Facebook API. Und die Quelle ist sehr einfach zu verstehen, wenn Sie sich die inneren Abläufe ansehen möchten. Sehen Sie sich das Authentifizierungsbeispiel in der Readme an. Tot einfach.

Twitter - twitter_oauth Lesen Sie erneut das Readme-Authentifizierungsbeispiel. Das war ziemlich einfach einzurichten.

OpenID - rails/open_id_authentication verwendet rubin openid Juwel, aber das Repo selbst ist kein Juwel, so dass Sie den Code in Ihre App fallen haben oder in Ihrem Plugin-Verzeichnis setzen. Werfen Sie einen Blick auf ihr Beispiel in der Readme und überprüfen Sie die Quelle genau, um zu verstehen, was vor sich geht (die nur 130 Zeilen Code). Ich habe ein gutes Stück davon geändert, damit es mit meinem Authentifizierungs-Plugin funktioniert, aber ich stieß auf einige Probleme, die es gleichzeitig mit Simple Registration und Attribute Exchange funktionieren ließen ... aber Sie könnten es vielleicht zum Laufen bringen out of the box, wenn das rdoc-Beispiel für Ihre App geeignet ist.

Lassen Sie mich wissen, wenn Sie spezielle Fragen zu diesen haben. Ich stieß auf ein paar Probleme, die ich mit allen 3 lösen konnte, als ich das aufstellte.

+0

Vielen Dank für die Antwort. Verwenden Sie ein allgemeines Authentifizierungs-Plug-in (wie authlogic, devise, restful_authentication) oder haben Sie Ihre eigene Standardauthentifizierungslösung? –

+0

Ich habe gerade mein eigenes einfaches Auth-Plugin erstellt. Ich brauche nicht wirklich all die Features, die das Gerät und das Authlogic bieten. Ich schaute auf die Quelle für beide und wählte einige Dinge aus, die ich gerne in meiner eigenen Rolle und Auth-Lösung verwendete. Ich mag es zwar nicht, das Rad neu zu erfinden, aber ich scheine immer mehr zu lernen, wenn ich es selbst programmiere (während ich mich von anderen Lösungen inspiriere). Plus, wenn ich es verlängern muss, muss ich nicht durch die Quelle anderer Leute für eine Woche graben, um es herauszufinden. Ich arbeite daran, das FB/Twitter/OpenID-Zeug in eine Schienenmaschine zu verwandeln. Ich werde es hier veröffentlichen, wenn ich in den nächsten Tagen dazu komme. – johnmcaliley

+0

Das wäre ausgezeichnet, danke :) –

4

ich etwa eine Woche lang versucht (erfolglos) open_id_authentication Arbeit zu bekommen. Ich habe versucht, Authlogic und alle damit verbundenen Edelsteine ​​und Plugins zu verwenden. Ich konnte die Dinge nicht so funktionieren lassen, wie ich es wollte. (Die Authentifizierung funktioniert nur, wenn die action (/: id) -Route aktiviert ist, aber wenn das aktiviert war, würden meine anderen Controller nicht funktionieren, weil etwas im Plugin den params-Hash entfernt hat - sehr frustrierend).

Allerdings konnte ich endlich OpenID arbeiten mit Devise (http://github.com/plataformatec/devise) und devise_openid_authenticatable (http://github.com/nbudin/devise_openid_authenticatable). Ich konnte den Liesmich auf den beiden Seiten folgen, damit alles so funktionierte, wie ich es wollte. Einfach. Geradeaus. Und Rails 3.0 kompatibel.

+0

Ja, ich konnte die open_id_authentication auch nicht ausführen. Jetzt nach einem Gerät suchen. – iJK

0

Der einfachste Weg, den ich gefunden habe, ist es, RPX NOW Service zu verwenden.

Sie können ein vollständiges funktionierendes Beispiel für die Verwendung mit Rails3 und dem RPX NOW-Juwel unter github finden.