英文原文:JavaScript oAuth 编译:oschina
引言
现在,很多的应用程序都在使用HTML和JavaScript, 这是一个非常明智的选择,让你跟上目前的趋势. 一些主要实体工具因为客户端验证和授权等原因提供了API. 当前网站对于验证的一个广受欢迎的功能是”单点登录”. 这让用户可以通过其它一些社交媒体网站上的身份认证直接登录你的网站. 这篇文章介绍用纯JavaScript通过一个简单的方法让你从三个身份认证提供者上登录到你的网站.
背景
为了使用身份认证提供者的API, 你要在他们的网站上创建一个应用,完成后它将提供一个API key让你使用.
- 谷哥 API: https://code.google.com/apis/console/
- Facebook: https://developers.facebook.com/apps
- Twitter: https://dev.twitter.com/apps
使用这些代码
如果你不打算长篇阅读,你可以去直接下载源代码文件然后随便你怎么使用/修改。
首先,我们包含一些文件在我们的HTML页面的头部。
1 2 3 4 5 |
<!--Register Jquery--> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script> <!--Register Google Api--> <script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script> |
最近的时间,Twitter已经废弃使用可能会导致开发者变得畏畏缩缩的单点客户端认证。然而,感谢YUI(由Yahoo!提供的API)我们能够使用Javascript这样去模拟一个服务端请求到Twitter。所以我们也可以把YUI的库包含在头部。
1 2 3 |
<!--Register YUI Api--> <script type="text/javascript" src="http://yui.yahooapis.com/3.3.0/build/yui/yui-min.js"></script> |
我们现在创建DOM元素来触发请求。这些元素可以是你的任意选择。
1 2 3 |
<div id="fbLogin" onclick="">Facebook</div> <div id="twitterlogin">Twitter</div> <div id="googlelogin">Google</div> |
现在我们看下脚本。我们从Facebook的登陆开始。
我们要创建的第一个函数用来向 Facebook oAuth API 发送初始化请,函数将发送客户端 ID(由你的Facebook 应用给出),重定向 URL (必须同你注册应用时填写的一样),还有请求类型(此处是访问令牌)。访问令牌是用户验证所必须的,并也会用来访问 Facebook 的图形 API,以及获取用户个人信息。
1 2 3 4 5 6 7 8 9 10 11 |
var appID = <YOUR CLIENT ID>; function fbLogin() { var path = 'https://www.facebook.com/dialog/oauth?'; var queryParams = ['client_id=' + appID, 'redirect_uri=' + window.location, 'response_type=token']; var query = queryParams.join('&'); var url = path + query; window.location.replace(url); } |
相应将是一个附加形如 “#access_token=…….” 的哈希字符串的访问令牌的到你网站的重定向。要使用访问令牌,我们现在需要一个检查 URL 中访问令牌的函数。同时此函数也将对 Facebook 图形 API 发送一个带有访问令牌和一个以参数形势接受用户信息的回调函数的请求。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function checkFbHashLogin() { if (window.location.hash.length > 3) { var hash = window.location.hash.substring(1); if(hash.split('=')[0] == 'access_token') { var path = "https://graph.facebook.com/me?"; var queryParams = [hash, 'callback=displayUser']; var query = queryParams.join('&'); var url = path + query; //use jsonp to call the graph var script = document.createElement('script'); script.src = url; document.body.appendChild(script); } yon-sy">.body.appendChild(script); } 一个广受欢迎的功能是”单点登录”. 这让用户可以通过其它一些社交媒体网站上的身份认证直接登录你的网站. 这篇文章介绍用纯JavaScript通过一个简单的方法让你从三个身份认证提供者上登录到你的网站.
背景 为了使用身份认证提供者的API, 你要在他们的网站上创建一个应用,完成后它将提供一个API key让你使用.
使用这些代码 如果你不打算长篇阅读,你可以去直接下载源代码文件然后随便你怎么使用/修改。 首先,我们包含一些文件在我们的HTML页面的头部。
最近的时间,Twitter已经废弃使用可能会导致开发者变得畏畏缩缩的单点客户端认证。然而,感谢YUI(由Yahoo!提供的API)我们能够使用Javascript这样去模拟一个服务端请求到Twitter。所以我们也可以把YUI的库包含在头部。
我们现在创建DOM元素来触发请求。这些元素可以是你的任意选择。
现在我们看下脚本。我们从Facebook的登陆开始。 我们要创建的第一个函数用来向 Facebook oAuth API 发送初始化请,函数将发送客户端 ID(由你的Facebook 应用给出),重定向 URL (必须同你注册应用时填写的一样),还有请求类型(此处是访问令牌)。访问令牌是用户验证所必须的,并也会用来访问 Facebook 的图形 API,以及获取用户个人信息。
相应将是一个附加形如 “#access_token=…….” 的哈希字符串的访问令牌的到你网站的重定向。要使用访问令牌,我们现在需要一个检查 URL 中访问令牌的函数。同时此函数也将对 Facebook 图形 API 发送一个带有访问令牌和一个以参数形势接受用户信息的回调函数的请求。
|