首页 > 代码库 > 浅谈第三方账号登录

浅谈第三方账号登录

    最近了解了下第三方账号登录,对其中的一些心得,做了简单的整理...

    现在主流的注册方式大致可分为以下两种:

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;//跳转到退出页
    });
}

    综上是对第三方账号登录的思考,貌似却没有对用户做太多的考虑。他们希望简单的登录,但是第三方暴漏了过多的隐私;他们渴望安全的应用,但是又被获取了太多的信息;所以是否选择第三方账号登录,要结合自身产品的定位,但无论何种选择,希望永远都可以做到尊重用户。


浅谈第三方账号登录