首页 > 代码库 > 浅谈第三方账号登录
浅谈第三方账号登录
最近了解了下第三方账号登录,对其中的一些心得,做了简单的整理...
现在主流的注册方式大致可分为以下两种:
1、本地账号注册 → 首页(最传统的注册方式,注册门槛高,易在登录页面就流失用户)
2、第三方注册 → (本地生成一个用户ID) → 首页(部分应用需要第二步)
要说一下的是:只要是通过第三方登录,就代表用户拿着别人给的钥匙进了自己家门,一旦这钥匙被拿走了,用户也就没了。
第1种注册方式比较传统,这里不再做过多的说明,我们来举例浅谈下第2种注册方式的优缺点:
目前不少较为稀有的资源,多是由论坛提供下载的,而要想下载,又必须先登录,为了这个资源注册一个只是用一次的帐号?我想,无论谁都不愿意。那可不可以有一个平台,用户注册一个账号后,可以利用这个账号,登录其他任意平台去做想做的事?
显 然,第三方账号登录满足了这样的需求。身在一个离不开网络的时代,每天有面对着不同的登录界面,能有一种简单的登录方式显得很重要。而且对开发者而言,第 三方账号登录也有着一些显而易见的好处,一是提升了用户的注册转化率,降低了进入的门槛。二是可以利用微博、QQ等平台的资源,提高自己的知名度。甚至还 可以省去自主登录体系的开发工作。提升用户注册转化率是因为给了用户更方便的路径,减少了因嫌注册麻烦而流失的用户;连接了微博等第三方平台,可以通过信 息在该平台的同步提升自己产品的曝光率,同时可以通过授权获得用户的粉丝、好友,并进行针对性的营销。
当 然,事无绝对,当开发者获取不到较多的授权,无法掌握用户的全部信息时,又如何跟踪用户,去捕捉他们的行为轨迹呢?而且,从某种角度而言用户还是在微博、 QQ等平台下,自己没有积累下用户的沉淀,万一哪天我们所使用的第三方平台......,貌似开发者们也没有什么太好的应对措施。
而且,第三方账号登录的使用,还是要根据自己产品的定位来决定。如果是比较轻量级的,重娱乐,重社交,并不定位于做企业的标杆,那就可以选择放弃自主账号体系。但如果是重内容,重资源,拥有较强独立性,那还是应该拥有属于自己的用户群。
粗略地了解第三方账号登录后,下面我们来简单的介绍下QQ、新浪微博的第三方账号登录流程...
QQ登录
1、在页面部署qc_loader.js
<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="101143186" data-redirecturi=""http://yhzx.sinosns.cn/static/html/qqRedirectUri.html" charset="utf-8"></script> <!-- 其中data-appid需要到腾讯开发平台去申请 -->
如果是spring-mvc中需要添加html页面(data-redirecturi所指页面)
Web.xml
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
spring-servlet.xml
<mvc:default-servlet-handler/>
qqRedirectUri.html(这只是一个在QQ登录时,闪现几秒钟的页面,并不是跳转后的页面,内容可以自定义)
2、调用JSSDK访问api接口
var qqInfo = ""; var qqLoginUri = "uri"; //uri为登录地址 QC.Login({ btnId:"qqLoginBtn" //插入按钮的节点id }, function(reqData, opts) {//登录成功 //获取用户的基本信息(昵称和头像) qqInfo = "&nickname=" + reqData.nickname + "&figureurl=" + reqData.figureurl; qqInfo = qqInfo.replace(/&/,"?"); window.location=qqLoginUri + qqInfo;//跳转到首页 });
3、放置qq按钮
<span id="qqLoginBtn"></span>
4、调用QCapi,获取数据
//获取openId,accessToken QC.Login.getMe(function(openId,accessToken) { qqInfo+= "&q_openId=" + openId + "&q_accessToken=" + accessToken; });
5、退出登录
<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" charset="utf-8"></script>
if(QC.Login.check()){ QC.Login.signOut(); location.href = qqLogoutUri;//跳转到退出页 }
新浪微博登录
1、在页面的HTML标签中增加XML命名空间。
<html xmlns:wb="http://open.weibo.com/wb">
2、在页面部署wb.js
<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=2355407151&debug=true" type="text/javascript" charset="utf-8"></script> <!-- appkey是需要到新浪微博开放平台注册。 debug=true是开启调试模式,若非调试阶段,去掉即可。 -->
3、调用JSSDK访问api接口
WB2.anyWhere(function (W) { W.widget.connectButton({ id: "wb_connect_btn", type: ‘3,2‘, callback: { login: function (o) { //登录后的回调函数 var sinaLoginUri = "uri"; //登录地址 //获取用户的基本信息(UID和昵称) var sinaWbInfo = "?sinawb_id="+ o.idstr + "&sinawb_screen_name=" + o.screen_name; window.location = sinaLoginUri+ sinaWbInfo; } } }); });
4、放置新浪微博登录按钮
<div id="wb_connect_btn"></div>
5、部署微博组件
//赞(组件)、关注(组件)、分享(组件)、话题墙(组件)...
6、退出登录
if(WB2.checkLogin()){ WB2.logout(function() { location.href = qqLogoutUri;//跳转到退出页 }); }
综上是对第三方账号登录的思考,貌似却没有对用户做太多的考虑。他们希望简单的登录,但是第三方暴漏了过多的隐私;他们渴望安全的应用,但是又被获取了太多的信息;所以是否选择第三方账号登录,要结合自身产品的定位,但无论何种选择,希望永远都可以做到尊重用户。
浅谈第三方账号登录