• 1. 第三方登录-OAUTH认证
  • 2. 第三方登录-OAUTH协议 OAUTH协议: 为用户资源的授权提供了一个安全的、开放而又简易的标准,OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码)。 第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。
  • 3. 第三方登录-OAUTH协议 中文名 : oAuth 本 质 :一种开放的协议 对 象 :第三方可以使用OAUTH认证服务 历史事件: OAuth开始于2006年11月, Twitter的OpenID实现。2007年4月,成立了OAuth讨论组。 OAuth Core 1.0 版本发布于2007年12月4日 2009年6月24日发布了OAuth Core 1.0 Revision A 版本。 OAuth 2.0的草案是在2010年5月初在IETF发布的。OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。
  • 4. 第三方登录-三方描述 在认证和授权的过程中涉及的三方包括: 服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。 用户 ,存放在服务提供方的受保护的资源的拥有者。 客户端 ,要访问服务提供方资源的第三方应用。在认证过程之前,客户端要向服务提供者申请客户端标识。
  • 5. 协议特点和原理 协议特点 (1). 简单:不管是OAUTH服务提供者还是应用开发者,都很易于理解与使用; (2). 安全:没有涉及到用户密钥等信息,更安全更灵活; (3). 开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
  • 6. OAUTH1.0-认证流程   第一步:用户访问第三方网站,比如:就是你需要使用QQ进行登录的网站;   第二步:你点击QQ登录后,第三方网站将会连接并进行请求,比如:你点击登录后,第三方网站会跳转到QQ平台,提示你进行登录;   第三步:你要进行授权第三方网站对你的信息访问的一个权限,比如:当你QQ登录成功后,QQ会提示你,是否授权第三方Web访问你的用户基本信息或其他的资源信息,这时你点击授权即可;   第四步:授权后,第三方Web即可访问你刚才授权的资源信息,比如:你的QQ基本信息-头像、昵称、性别等。
  • 7. OAUTH1.0-认证流程
  • 8. OAUTH1.0-认证流程 第一步:网站向认证平台请求一个未授权的Token,这个Request Token Url是前面说的第一个Url; 第二步:跳转至用户授权页面,提示用户进行登录,并进行授权,返回获得已授权的Token,用到的User Authorization Url是前面说的第二个Url; 第三步:通过已授权的Token,向认证平台请求Access Token(数据令牌),用到的Request Access Url是前面说的第三个Url,返回后到这步整个认证流程就结束了,最后一步,是通过数据令牌等参数,调用接口获取用户信息,不完全算认证的流程。(我喜欢简洁明了,认证流程就是这样,相信通过图示及讲解都能明白,若有不明白之处请留言)
  • 9. OAUTH2.0-认证流程3、OAuth 1.0的认证流程   这里直接讲解OAuth 1.0协议的认证机制(OAuth 2.0会在下一节中讲述),虽然现在很多平台都是遵循OAuth 2.0,但还是有开放OAuth 1.0平台的,比如:新浪微博、QQ1.0平台等。   在OAuth 1.0认证中会用到三个重要的Url:   第一个:Request Token Url,获取未授权的Token的Url;   第二个:User Authorization Url,请求用户对Token进行授权的Url;   第三个:Request Access Url,使用Token获取Access Token的Url。   上面是认证流程中用到的三个Url,在下面的流程示意图中会体现到,这是我讲解OAuth幻灯片的一页,直接截图下来进行讲解:
  • 10. OAUTH2.0-认证流程
  • 11. OAUTH2.0-认证流程 在OAuth2.0的处理流程,主要分为以下四个步骤:   1)得到授权码code   2)获取access token   3)通过access token,获取OpenID   4)通过access token及OpenID调用API,获取用户授权信息   上面是流程的大概四个步骤,在下面的流程示意图中会得到体现,这是我制作的一个幻灯片的流程图(文章最后会附上制作的OAuth幻灯片分享给大家)
  • 12. OAUTH2.0-认证流程  第一步:首先直接跳转至用户授权地址,即图示 Request User Url ,提示用户进行登录,并给予相关资源授权,得到唯一的Auth code,这里注意的是code只有10分钟的有效期,对于安全考虑,相对于OAuth 1.0省了一步获取临时的Token,并且有效期也进行了控制,比1.0认证简化了很多,并安全一些; 第二步:得到授权code后,这一步就是请求access token,通过 图示 Request access url ,生成得到数据Token; 第三步:通过Access Token请求OpenID,OpenID是用户在此平台的唯一标识,通过图示 Request info url 请求,然后得到OpenID; 第四步:通过第二步得到的数据Token、第三步得到的OpenID及相关API,进行请求,获取用户授权资源信息。(我喜欢简洁明了,OAuth2.0认证流程就是这样,相信通过图示及讲解都能明白,若有不明白之处请留言) 最后,分享自己关于OAuth1.0、2.0认证流程讲解的幻灯片,结合文章来看,你会更容易理解。
  • 13. 微博登录介绍(一) http://open.weibo.com/ http://www.php.com/bbs/forum.php?mod=viewthread&tid=73&extra=page%3D1  微博登录包括身份认证、用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。 它有如下特点:直接用微博账号登录你的网站获得高质量微博活跃用户更便捷的分享到微博,提高网站信息传播力
  • 14. 微博登录介绍-网站接入 网站接入介绍: http://open.weibo.com/wiki/%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5%E4%BB%8B%E7%BB%8D 微博登陆配置入口: http://open.weibo.com/authentication/
  • 15. 微博登录介绍-网站接入(二)
  • 16. 微博登录介绍-网站接入(三) 授权机制: http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6#.E6.8E.88.E6.9D.83.E9.A1.B5 创建接入的网站: http://open.weibo.com/webmaster 授权的接口: http://open.weibo.com/webmaster/privilege?siteid=2953440814 http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI 网站开发的sdk: http://open.weibo.com/wiki/SDK
  • 17. 第三方登录-认证步骤 OAUTHWeb应用的认证授权(http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E) code 用来换取accesstoken的授权码 请求获取Grant Code→使用Grant Code申请Access Token→以后就使用这个Access Token获取微博的服务 1. 引导需要授权的用户到如下地址: https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI 2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
  • 18. 第三方登录-认证步骤 3. 换取Access Token https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE 返回值 { "access_token":"SlAV32hkKG", "remind_in ":3600, "expires_in":3600 } 4. 使用获得的OAuth2.0 Access Token调用API
  • 19. 网页微信登录随着手机微信的崛起,腾讯发布的微信联登确实很诱惑pc端的伙伴们,现在就说说在pc端用微信扫一扫实现微信第三方登陆的方式。 第一步:获取AppID AppSecret (不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码,获取code https://open.weixin.qq.com/connect/qrconnect?appid=AppID&redirect_uri=http://www.baidu.com&response_type=code&scope=snsapi_login&state=2014#wechat_redirect 第三步:通过code获取access_token https://api.weixin.qq.com/sns/oauth2/access_token?appid=AppID&secret=AppSecret &code=00294221aeb06261d5966&grant_type=authorization_code
  • 20. 网页微信登录 第四步:因接口频率有次数限制,如果需要,刷新access_token https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=AppID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN 第五步:通过access_token和openid获取用户的基础信息,包括头像、昵称、性别、地区 https://api.weixin.qq.com/sns/userinfo?access_token=bezXEiiBSKSxW0eoblIewFNHqAG-PyW9OqI_L81E4ZCi2cFpfoJTyQc0xKlPPCtqK1kLJfiRbVrpoOVLw7fjpqh52bn7C68SHa2HSgYsVPXZPvJvtayDa57-_7TeHYw&openid=o39YsbmuV_bIPGpj1MTe
  • 21. 网页微信登录另外需要特别注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求,文档: http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html 技术文档说明:http://blog.sina.com.cn/s/blog_69f316910102va1t.html
  • 22. OAuth2.0分为四种鉴权方式 OAuth2.0分为四种鉴权方式,oauth2.0认证包括四种认证模式,分别为授权码模式,隐式授权,资源所有者密码证书授权以及客户端证书授权。, 已分别应对不同的需求, 比如说web或app. 通常我们在web端使用第一种Authorization Code方式。为了简单说明,我直接拿QQ做例子,简单说一下流程: 当用户点击QQ登陆,你会通引导用户跳转到第三方登陆的登陆界面, 当用户成功登录以后会自动跳转回来,并附带一个code参数,接着你使用code就可以获得access token(访问令牌),对于QQ,由于第三方登录结合了Openid, 所以需要再通过token获取openid。这个openid是和QQ用户一一对应的, 使用access token + openid 即可获取用户信息。 第三方平台和本地用户系统结合应该分为三种情况: 本地未登录,第一次登录第三方:此时相当于注册,直接把第三方信息拉取来并注册成本地用户就可以了,并建立本地用户与第三方用户(openid)的绑定关系 本地未登录,再次登录第三方:此时用户已注册,获取到openid后直接找出对应的本地用户即可 本地登录,并绑定第三方: 这个只要将获取到的openid绑定到本地用户就可以了 http://segmentfault.com/q/1010000002493891?bd_source_light=4746641 http://wenku.baidu.com/view/12a5c10a844769eae009ed78.html
  • 23. 第三方登录-其他平台 凡客: http://open.vancl.com/200.htm 优酷: http://open.youku.com/ 微信: http://open.weixin.qq.com/ 百度: http://developer.baidu.com/
  • 24. API SDK 软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK 为了鼓励开发者使用其系统或者语言,许多 SDK 是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。
  • 25. OAUTH协议-相关链接http://open.weibo.com/authentication/ http://open.weibo.com/wiki/index.php/SDK http://kb.cnblogs.com/page/189153/ http://zh.wikipedia.org/zh/OAuth http://www.phpddt.com/%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91/oauth-2.html http://baike.baidu.com/link?url=l9dkcNvoks7SLyZYvjMz5A68erIAWPxGliXz-b0n4NMYRfjELW_RXGJhgu_WgGT0l5l0CACvIEa6tQO-phgyOa http://blog.163.com/ppy2790@126/blog/static/103242241201162852644220/