第三方登陆


1.第三方登陆概述

第三方登陆:就是利用用户在第三方平台上已有的账号来快速完成自己在其它应用或网站的登录或者注册的功能。


2.第三方登陆利弊

对用户:
(方便)
1.省去注册流程;
2.不用费心去记各种账号密码;
3.可以用第三方平台账号“一号走遍天下”;
4.通过第三方平台平台可以更容易地对好友进行分享并与好友实现互动;

(隐私安全问题)
通过授权该应用或网站却可以访问用户的很多资源,比如评论、好友、生日等信息,而且许多在授权时都是默认选项,用户非常容易因此就泄露了自己的信息。
许多应用在授权时还会默认在微博等第三方平台同步状态,这等于将你用了什么应用,在应用里做了什么都公诸于众,(比如用了某款婚恋应用你却不想让人知道)。平台可以更容易地对好友进行分享并与好友实现互动;

对开发者:

1.提升了用户的注册转化率,降低了进入的门槛。减少了因嫌注册麻烦而流失的用户。
2.可以利用第三方平台的资源,提高自己产品的知名度,提升自己产品的曝光率。可以通过授权获得用户的粉丝、好友,并进行针对性的营销。
3.还有就是可以省去自主登陆体系的开发工作。

1.如果没有较多的授权,无法掌握用户的全部信息。
2.从某种角度而言用户还是在第三方平台下,自己没有累计下用户的沉淀,还是受制于各大平台,万一哪天开放的策略有变或平台以用户相要挟,开发者也没有什么太好的反击办法。

自主登录系统or第三方账号登陆
应用或网站重分享、重评论、重社交,并不定位于做行业的标杆,是比较轻量级的应用,那么你可以选择放弃自主账号体系,让用户无需纠结于是用第三方账号还是重新注册一个账号,让注册流程更加简洁,用户目标更加明确。 

应用是重内容、轻社交,独立性较强,有可能形成一个社区或闭环,可以经过时间培养起一批有自己风格的用户,有自己的用户文化,那么还是应该保留有自己的登录体系,一来可能适应更多用户的需求,二来也容易让用户产生一种归属感。如果有信心的话甚至可以放弃第三方登录,让用户对你的产品有着更深的需求与认知,这样慢慢发展也许你也会成为另一个第三方平台 。


3.第三方登陆原理

第三方登陆:
采用OAuth标准协议来进行用户身份验证和获取用户授权。
OAuth(开放授权): 是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。目前的版本是2.0版。

应用场景:

有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片。问题是只有得到用户的授权,Google才会同意"云冲印读取这些照片。那么,"云冲印"怎样获得用户的授权呢?

OAuth的作用:就是让"客户端"安全可控地获取"用户"的授权,与"服务商提供商"进行互动。

概念:
Third-party application:第三方应用程序,又称"客户端"(client)
HTTP service:HTTP服务提供商,简称"服务提供商"。
Resource Owner:资源所有者,又称"用户"(user)。
User Agent:用户代理,就是指浏览器。
Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。


OAuth的思路:
OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。"客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。"客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。

OAuth 2.0的运行流程:



(A)用户打开客户端以后,客户端要求用户给予授权。

(B)用户同意给予客户端授权。

(C)客户端使用上一步获得的授权,向认证服务器申请令牌。

(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

(E)客户端使用令牌,向资源服务器申请获取资源。

(F)资源服务器确认令牌无误,同意向客户端开放资源。

客户端的授权模式:
OAuth 2.0定义了四种授权方式:
授权码模式(authorization code)
简化模式(implicit)
密码模式(resource owner password credentials)
客户端模式(client credentials)


授权码模式:


(A)用户访问客户端,后者将前者导向认证服务器。

客户端申请认证的URI地址:(以qq登陆为例)
PC网站:https://graph.qq.com/oauth2.0/authorize
WAP网站:https://graph.z.qq.com/moc2/authorize

参数:
response_type:表示授权类型,此处的值固定为"code",必选项
client_id:表示客户端的ID,必选项
redirect_uri:表示重定向URI,必选
state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。
scope:表示申请的权限范围,可选项

(B)用户选择是否给予客户端授权。

(C)假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。

服务器回应客户端的URI:
PC网站:http://graph.qq.com/demo/index.jsp?code=9A5F****06AF&state=test
WAP网站:http://open.z.qq.com/demo/index.jsp?code=9A5F***06AF&state=test

参数:
code:表示授权码,必选项。该码的有效期应该很短,通常设为10分钟,客户端只能使用该码一次,否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。
state:如果客户端的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。

(D)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。

请求URI地址:
PC网站:https://graph.qq.com/oauth2.0/token
WAP网站:https://graph.z.qq.com/moc2/token

参数:
grant_type:表示使用的授权模式,必选项,此处的值固定为"authorization_code"。
code:表示上一步获得的授权码,必选项。
redirect_uri:表示重定向URI,必选项,且必须与A步骤中的该参数值保持一致。
client_id:表示客户端ID,申请QQ登录成功后,分配给网站的appid必选项。
client_secret:申请QQ登录成功后,分配给网站的appkey。

(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。

服务器回应客户端的URI:
PC网站:http://graph.qq.com/demo/index.jsp?
access_token=FE04***CCE2&expires_in=7776000&refresh_token=88E4*****BE14

参数:
access_token:表示访问令牌,必选项。
expires_in:表示过期时间,单位为秒。如果省略该参数,必须其他方式设置过期时间。
refresh_token:表示更新令牌,用来获取下一次的访问令牌,可选项。


简化模式:不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。


密码模式:用户向客户端提供自己的用户名和密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。


客户端模式:指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。


OAuth 2.0参考资料:
http://www.rfcreader.com/#rfc6749


4.第三方登陆的实现

支持OAuth授权的平台(列举常见几个):

百度开放服务平台:http://developer.baidu.com/wiki/index.php?title=docs/oauth


微信开放平台:https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN


QQ互联开放平台:http://wiki.connect.qq.com


微博开放平台:http://open.weibo.com/authentication/



网站接入流程(QQ登陆为例)

1. 开发者注册

1.1在QQ互联开放平台首页 http://connect.qq.com/ ,点击右上角的“登录”按钮,使用QQ帐号登录,

1.2登录成功后会跳转到开发者注册页面,在注册页面需要提交公司或个人的基本资料。


2. 网站接入申请

网站接入前,需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权。

2.1 添加网站

开发者注册成功后,会跳转到“管理中心”页面。点击添加网站,填写相应的信息,

网站信息填写完成,点击“确定”后,网站注册完成,进入管理中心,在管理中心可以查看到网站获取的appid和appkey

2.2 网站信息完善

在管理中心,点击申请的网站下的“编辑信息”,进入编辑页面,点击右上角的“编辑”按钮,页面进入编辑状态,即可对网站信息进行修改和完善


 3.网站开发流程:

网站可通过以下两种方式接入:

(1)使用QQ互联提供的SDK包,用户体验统一,只需要修改少量代码,不需要理解验证授权流程,需要快速接入QQ登录的网站和移动应用可选用此方法。
QQ互联提供JavaScript,PHP,Java等多个版本的SDK

(2)根据QQ登录OAuth2.0协议,自主开发,此方法自定义程度较高,需要与现有系统进行整合的网站和移动应用可选用此方法。

sdk下载:http://wiki.connect.qq.com/sdk下载


3.1 网站上设置QQ登录入口

3.2 用户登录验证和授权

3.3 登录和授权完成后,跳转回网站

3.4 获取并存储access token以及openid

(1)access token用来判断用户在本网站上的登录状态,具有3个月有效期,用户再次登录时自动刷新。 

(2)openid是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有帐号进行绑定。

具体实现在各开放平台都有详细的开发文档!


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值