我正在尝试为我的 Angular 应用程序编写登录解决方案,
这意味着允许用户通过 Facebook/Google/Twitter 连接或正常注册。
我发现Angular-OAuth很有用,但它似乎不适用于 Facebook(或 Twitter)。
任何人都知道一个包罗万象的解决方案吗?
我正在尝试为我的 Angular 应用程序编写登录解决方案,
这意味着允许用户通过 Facebook/Google/Twitter 连接或正常注册。
我发现Angular-OAuth很有用,但它似乎不适用于 Facebook(或 Twitter)。
任何人都知道一个包罗万象的解决方案吗?
这是一个简单的示例,仅使用带有角度 js 的重定向
这是重定向到身份验证的方法
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);
};
});
以下是身份验证后如何处理重定向
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");
}
})
});
看看oauth.io
有一个免费的开源替代免费增值oauth.io:hello.js
看看 Github 上的Satellizer项目。我刚刚开始使用它,它似乎很有希望。
它使用 JSON Web 令牌,并允许使用以下方式登录:电子邮件+密码、Facebook、Twitter、Google 和任何其他 OAuth 1.0/2.0 提供商。
客户端代码开箱即用,您必须自己实现服务器端。许多服务器端语言的工作流程和代码示例都有很好的描述。
只是想为上面提到的OAuth.io解决方案添加一些评论和示例 Angular 代码。正如创始人所说,这是一项付费服务,但我相信它有两个主要好处:
前端代码也比较简单。我从coderwall拿了这个。
import {Component, OnInit} from '@angular/core';
function _window(): any {
// return the global native browser window object
return window;
}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
ngOnInit(): void {
const oauthScript = document.createElement('script');
oauthScript.src = 'https://cdn.rawgit.com/oauth-io/oauth-js/c5af4519/dist/oauth.js';
document.body.appendChild(oauthScript);
}
handleClick(e) {
// Prevents page reload
e.preventDefault();
// Initializes OAuth.io with API key
// Sign-up an account to get one
_window().OAuth.initialize('YOUR OAUTH.IO PUBLIC KEY');
// Popup Github and ask for authorization
_window().OAuth.popup('github').then((provider) => {
// Prompts 'welcome' message with User's name on successful login
// Check console logs for additional User info
provider.me().then((data) => {
console.log('data: ', data);
alert('Welcome ' + data.name + '!');
});
// You can also call Github's API using .get()
provider.get('/user').then((data) => {
console.log('self data:', data);
});
});
}
}