How to use Hello.js and Angular to enable client-side social login.
bower installto install bower dependencies.- Setup a Facebook app
How to use Hello.js and Angular to enable client-side social login.
bower install to install bower dependencies.| (function () { | |
| var app = angular.module('helloApp', ['ui.router','ngHello','angular-storage']); | |
| app.config( function($stateProvider, $urlRouterProvider, helloProvider) { | |
| helloProvider.init({ | |
| facebook: 'YOUR_FACEBOOK_APP_ID' | |
| }, {redirect_uri: 'redirect.html'}); | |
| $urlRouterProvider.otherwise("/"); | |
| $stateProvider.state('login', { | |
| url: "/", | |
| templateUrl: "home.html", | |
| controller: "LoginController" | |
| }).state('test', { | |
| url: "/test", | |
| templateUrl: "test.html", | |
| controller: "TestController" | |
| }).state('home', { | |
| url: "/login", | |
| template: "home.html" | |
| }); | |
| }); | |
| app.run(function($rootScope, store, hello, $timeout) { | |
| $rootScope.user = null; | |
| $rootScope.$on('$locationChangeStart', function() { | |
| var user = store.get('user'); | |
| if (user) { | |
| $rootScope.user = user; | |
| } else { | |
| self.location.href = "#/"; | |
| } | |
| }); | |
| }); | |
| app.controller('TestController', function ($scope, $rootScope, hello, $timeout) { | |
| $scope.whoami = ""; | |
| if( $rootScope.user === null ){ | |
| self.location.href = "#/"; | |
| }else{ | |
| $scope.whoami = "Hey " + $rootScope.user.name; | |
| } | |
| }); | |
| app.controller('LoginController', function ($scope, $rootScope, hello, store, $timeout) { | |
| $scope.whoami = ""; | |
| if( $rootScope.user !== null ){ | |
| $scope.whoami = "Hey " + $rootScope.user.name; | |
| } | |
| $scope.login = function () { | |
| hello('facebook').login(); | |
| }; | |
| $scope.logout = function () { | |
| hello('facebook').logout().then(function() { | |
| $timeout(function() { | |
| store.remove('user'); | |
| $scope.whoami = ""; | |
| $rootScope.user = {}; | |
| }); | |
| }, function(e) { | |
| alert('Signed out error: ' + e.error.message); | |
| }); | |
| }; | |
| hello.on("auth.login", function (auth) { | |
| hello(auth.network).api('/me').then(function( user ) { | |
| var displayName = user.name.split(' '); | |
| user.first_name = displayName[0].toLowerCase(); | |
| user.last_name = displayName[displayName.length - 1].toLowerCase(); | |
| user.fbid = user.id; | |
| $scope.user = user; | |
| $timeout(function() { | |
| $rootScope.user = user; | |
| store.set('user', user ); | |
| $scope.whoami = "Hey " + $rootScope.user.name; | |
| }); | |
| }); | |
| }); | |
| }); | |
| })(); |
| { | |
| "name": "helloAngular", | |
| "authors": [ | |
| "Roger Stringer <[email protected]>" | |
| ], | |
| "description": "", | |
| "main": "", | |
| "moduleType": [], | |
| "license": "MIT", | |
| "homepage": "", | |
| "ignore": [ | |
| "**/.*", | |
| "node_modules", | |
| "bower_components", | |
| "test", | |
| "tests" | |
| ], | |
| "dependencies": { | |
| "angular-ui-router": "~0.2.15", | |
| "ng-hello": "*" | |
| } | |
| } |
| <h1>hi</h1> | |
| <div id="profile_facebook">{{whoami}}</div> | |
| <a ng-click="login()" ng-show="!whoami">Login</a> | |
| <a ng-click="logout()" ng-hide="!whoami">Logout</a> | |
| <a href="#/test">Test</a> |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> | |
| <title>Hello Flying Angular</title> | |
| <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> | |
| <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.15/angular-ui-router.min.js"></script> | |
| <script type="text/javascript" src="https://cdn.flybase.io/libs/angular-storage.js"></script> | |
| <script type="text/javascript" src="https://cdn.flybase.io/libs/hello.all.js"></script> | |
| <script type="text/javascript" src="https://cdn.flybase.io/libs/ng-hello.js"></script> | |
| <script type="text/javascript" src="app.js"></script> | |
| </head> | |
| <body ng-app="helloApp"> | |
| <div ui-view></div> | |
| </body> | |
| </html> |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>Hello, redirecting...</title> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> | |
| </head> | |
| <body> | |
| <div class="loading"><span>•</span><span>•</span><span>•</span></div> | |
| <h2>Please close this window to continue.</h2> | |
| <script> | |
| window.onbeforeunload = function(){ | |
| document.getElementsByTagName('h2')[0].innerHTML="Redirecting, please wait"; | |
| } | |
| </script> | |
| <script type="text/javascript" src="https://cdn.flybase.io/libs/hello.all.js"></script> | |
| </body> | |
| </html> |
| <h1>I am.....</h1> | |
| <div id="profile_facebook">{{whoami}}</div> | |
| <a href="#/">Back</a> |