22

Ich habe die beste Methode für die Implementierung von Facebook, Twitter und E-Mail/Passwort-Authentifizierung für eine reine JSON Rails 4.1 Anwendung, die Rails-API verwendet. Die Rails-App hat KEINE Ansichten und dient nur JSON zwischen nativen Android- und iPhone-Anwendungen (sie verwenden das ionische Framework, das eine eckige Anwendung ist, die in eine native Anwendung kompiliert wurde).Rails JSON API oauth Authentifizierung

In der Vergangenheit habe ich die Basisauthentifizierung implementiert, wo ein auth_token in Kopfzeilen von den Client-Apps an eine Rails-API übergeben wird, ohne Probleme mit in Auth eingebauten Rails, aber seit dieser Zeit muss ich mit Facebook und Twitter I integrieren bin auf der Suche nach einer Lösung, die oauth verwendet.

Ich habe in der Entwicklung gesucht, aber es scheint nicht gut mit einem reinen JSON-API zu spielen. Ebenso scheint Omniauth auf Ansichten & Redirects angewiesen. Außerdem scheinen opro und doorkeeper großartig zu sein, um Ihr eigener oauth Provider zu sein, aber ich sehe nicht, wie sie mit Dritten wie Facebook und Twitter umgehen.

Wie implementieren Menschen die Oauth-Authentifizierung von mehreren Anbietern für eine reine JSON-API-App in Rails?

+2

Ich wünschte, ich könnte Ihnen mehr als 1 upvote :) geben. Das ist genau das Problem, das ich auch habe. Jeder spricht über Token-Authentifizierung, aber niemand spricht darüber, wie man die Authentifizierung von Drittanbietern durchführt. Meine derzeitige Lösung bestand darin, dass der Client zu meiner API umleitet, ich mich um die Authentifizierung mit OmniAuth kümmere, ein Authentifizierungstoken in einem Cookie hinterlege und dann zurück zum Client umleite. Aber das funktioniert, weil der einzige Client, den ich habe, ein Browser ist, und ich erkannte, dass ich es generischer haben möchte. Sorry, habe nicht wirklich geholfen :) –

+0

@Johan hey, wie hast du am Ende die Authentifizierung implementiert? –

+1

@PaulFitzgerald Open Source es https://github.com/johnkelly/heavenly. Grundsätzlich facebook auth, die Token Auth nach Authentifizierung wird. – John

Antwort

3

Ich machte eine sehr ähnliche JSON Api mit Knurren. Die Authentifizierung verwendete benutzerdefinierte Serviceklassen, um sich gegen Google, Facebook und Twitter zu authentifizieren. Die Serviceklasse für Facebook benötigte einen Facebook Tokan und nutzte die Koala gem, um die Informationen von Facebook zu holen und die soziale Identität zu bevölkern. Bei Bedarf wurde ein neuer Benutzer erstellt oder die soziale Identität wurde mit einem vorhandenen Benutzer mit der gleichen UID oder E-Mail verknüpft.

Auf diese Weise hatten wir eine fein abgestimmte Kontrolle über den gesamten Authentifizierungsprozess.

Wir haben auch swagger verwendet, um die API zu dokumentieren und ein einfach zu testendes Frontend bereitzustellen.

4

Blick auf this Blog. Hier hat der Autor erklärt, Google oauth2 in Android mit Rails Backend mit einigen schönen Diagrammen zu implementieren. Hoffe, das wird helfen.