2013-08-13 12 views
47

Sto provando a scrivere una soluzione di accesso per la mia Angular App,
Ciò significa consentire all'utente di connettersi tramite Facebok/Google/Twitter o registrarsi normalmente.
Ho trovato utile Angular-OAuth, ma non sembra funzionare con Facebook (o Twitter).AngularJS + OAuth

Qualcuno sa di una soluzione all-inclusive per questo?

risposta

38

diano un'occhiata al oauth.io

  • Facile implementazione in Javascript
  • 80+ fornitori di OAuth
  • veloce & sicuri
+1

Così buono. Grazie per il link. –

+2

è gratuito? – zizoujab

+0

è ancora la soluzione migliore per le app angolari? – FutuToad

13

C'è un Free-Open-Source alternativa al freemium oauth.io: hello.js

+6

OAuth.io è anche opensource con il suo deamon OAuth: github.com/oauth-io/oauthd;) –

+0

Ma questo è solo il provider OAuth (server), non il client js, credo. –

+2

Tutti i client sono disponibili su github: [js] (https: // github.com/oauth-io/oauth-js), [ios] (https://github.com/oauth-io/oauth-ios), [android] (https://github.com/oauth-io/oauth- android), [phonegap] (https://github.com/oauth-io/oauth-phonegap), [flex] (https://github.com/oauth-io/oauth-flex), [php] (https : //github.com/oauth-io/sdk-php), [node.js] (https://github.com/oauth-io/sdk-node) e altri stanno arrivando). Puoi configurarli per funzionare con oauthd invece di oauth.io –

50

Ecco un semplice esempio utilizzando solo reindirizzamenti con js angolari

Ecco come reindirizzare all'autenticazione

angular.module('angularoauthexampleApp') 
    .controller('MainCtrl', function ($scope) { 
    $scope.login=function() { 
     var client_id="your client id"; 
     var scope="email"; 
     var redirect_uri="http://localhost:9000"; 
     var response_type="token"; 
     var url="https://accounts.google.com/o/oauth2/auth?scope="+scope+"&client_id="+client_id+"&redirect_uri="+redirect_uri+ 
     "&response_type="+response_type; 
     window.location.replace(url); 
    }; 
    }); 

Ecco come gestire il reindirizzamento dopo l'autenticazione

angular 
    .module('angularoauthexampleApp', [ 
    ]) 
    .config(function ($routeProvider) { 
    $routeProvider 
     .when('/access_token=:accessToken', { 
     template: '', 
     controller: function ($location,$rootScope) { 
      var hash = $location.path().substr(1); 

      var splitted = hash.split('&'); 
      var params = {}; 

      for (var i = 0; i < splitted.length; i++) { 
      var param = splitted[i].split('='); 
      var key = param[0]; 
      var value = param[1]; 
      params[key] = value; 
      $rootScope.accesstoken=params; 
      } 
      $location.path("/about"); 
     } 
     }) 
    }); 

informazioni più complete qui http://anandsekar.github.io/oauth2-with-angularjs/

+10

perché questa non è la risposta scelta? –

+1

Sono d'accordo, questa è la risposta più completa –

+0

In che modo la parte diversa dell'applicazione ottiene che l'utente sia autorizzato? –

6

Dai un'occhiata al progetto Satellizer su Github. Sto solo iniziando, sembra promettente.

Utilizza i token Web JSON e consente l'accesso con: email + password, Facebook, Twitter, Google e qualsiasi altro provider OAuth 1.0/2.0.

Il codice del lato client funziona, è necessario implementare il lato server da soli. Esistono buone descrizioni dei flussi di lavoro e esempi di codice per molti linguaggi lato server.