第三方登录_第三方登录怎么实现 - CSDN
精华内容
参与话题
  • 第三方登录实现原理

    万次阅读 2020-04-05 21:54:50
    数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。 首先,我们先看一下 底层协议: OAUTH协议为用户资源的授权提供了...

    简单说,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。
    首先,我们先看一下
    底层协议:
    OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。
    相关的术语
    一、三个URL:

    1. Request Token URL: 获取未授权的Request Token服务地址;
    2. User Authorization URL: 获取用户授权的Request Token服务地址;
    3. Access Token URL: 用授权的Request Token换取Access Token的服务地址;

    二、参数定义:
    4. OAUTH_consumer_key: 使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的OAUTH_consumer_key。
    5. OAUTH_consumer_secret:OAUTH_consumer_key对应的密钥。
    6. OAUTH_token:OAUTH进行到最后一步得到的一个“令牌”,通过此“令牌”请求,就可以去拥有资源的网站抓取任意有权限可以被抓取的资源。
    7. OAUTH_token_secret:OAUTH_token对应的私钥。
    8. OAUTH_signature_method: 请求串的签名方法,应用每次向OAUTH三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。
    9. OAUTH_signature: 用上面的签名方法对请求的签名。
    10. OAUTH_timestamp: 发起请求的时间戳,其值是距1970 00:00:00 GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。
    11. OAUTH_nonce: 随机生成的字符串,用于防止请求的重复,防止外界的非法攻击。
    12. OAUTH_version: OAUTH的版本号。

    三、响应代码
    13. HTTP 400 Bad Request 请求错误
    14. Unsupported parameter 参数错误
    15. Unsupported signature method 签名方法错误
    16. Missing required parameter 参数丢失
    17. Duplicated OAUTH Protocol Parameter 参数重复
    18. HTTP 401 Unauthorized 未授权
    19. Invalid Consumer Key 非法key
    20. Invalid / expired Token 失效或者非法的token
    21. Invalid signature 签名非法
    22. Invalid / used nonce 非法的nonce
    四、认证流程:
    1. 获取未授权的request token
    请求参数:
    OAUTH_consumer_key:消费方键值。
    OAUTH_signature_method:消费方签署本请求所用的签名方法。
    OAUTH_signature:签名,定义于签署请求 (签署请求)。
    OAUTH_timestamp:定义于Nonceand Timestamp (单次值与时间戳)。
    OAUTH_nonce:定义于Nonceand Timestamp (单次值与时间戳)。
    OAUTH_version:可选。
    额外参数:由服务提供方定义的任意额外参数
    服务方返回结果,响应包含如下参数:
    OAUTH_token:请求令牌
    OAUTH_token_secret:令牌密钥
    附加参数:由服务提供方定义的任意参数。

    2. 获取用户授权的request token
    请求参数:
    OAUTH_token:可选。在前述步骤中获得的请求令牌。服务提供方可以声明此参数为必须,也可以允许不包含在授权URL中并提示用户手工输入。
    OAUTH_callback:可选。消费方可以指定一个URL,当 获取用户授权 (获取用户授权)成功后,服务提供方将重定向用户到这个URL。
    附加参数:由服务提供方定义的任意参数。
    服务提供方将用户引导回消费方。
    如果消费方在OAUTH_callback中提供了回调URL(在消费方引导用户至服务提供方 (消费方引导用户至服务提供方)中描述),则服务提供方构造一个HTTP GET请求URL,重定向用户浏览器到该URL,并包含如下参数:
    (1) OAUTH_token:被用户授权或否决的请求令牌
    (2) 回调URL可以包含消费方提供的查询参数,服务提供方必须保持已有查询不变并追加OAUTH_token参数。
    3. 用授权的request token换取Access Token
    消费方请求访问令牌参数:
    OAUTH_consumer_key:消费方键值。
    OAUTH_token:之前获取的请求令牌。
    OAUTH_signature_method:消费方使用的签署方法。
    OAUTH_signature:签署请求 (签署请求)中定义的签名。
    OAUTH_timestamp:在单次值与时间戳 (单次值与时间戳)中定义。
    OAUTH_nonce:在单次值与时间戳 (单次值与时间戳)中定义。
    OAUTH_version:版本号,可选。
    返回参数:
    OAUTH_token:访问令牌。
    OAUTH_token_secret:令牌密钥。
    4. 访问受保护资源
    请求参数:
    OAUTH_consumer_key:消费方键值。
    OAUTH_token:访问令牌。
    OAUTH_signature_method:消费方使用的签署方法。
    OAUTH_signature:签署请求 (签署请求)中定义的签名。
    OAUTH_timestamp:定义于单次值与时间戳 (单次值与时间戳).
    OAUTH_nonce:定义于单次值与时间戳 (单次值与时间戳).
    OAUTH_version:版本号,可选。
    附加参数:服务提供方指定的附加参数。
    授权流程:
    在这里插入图片描述
    OAUTH认证授权就三个步骤,三句话可以概括:
    1. 获取未授权的Request Token
    2. 获取用户授权的Request Token
    3. 用授权的Request Token换取Access Token

    当应用拿到Access Token后,就可以有权访问用户授权的资源了。大家可能看出来了,这三个步骤不就是对应OAUTH的三个URL服务地址嘛。一点没错,上面的三个步骤中,每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到Access Token。
    具体每步执行信息如下:
    使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求。(请求需要带上参数,前面说过)
    OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。
    使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。
    OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。
    Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见上图,这个比第一步A多了一个参数就是Request Token。
    OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。
    使用者以后就可以使用上步返回的Access Token访问用户授权的资源。
    具体实现示例,请看我另一篇文章,保证看了不会后悔!
    https://blog.csdn.net/weixin_43885417/article/details/105102144

    展开全文
  • 第三方登录(QQ-Java版)

    千次阅读 2018-09-06 17:51:13
     这没啥可说的,无非就是想利用QQ庞大的用户群体,提高本站流量,达到快速扩充本站用户的效果,当然,无论是QQ登录,还是其它第三方登录方式,这些都是辅助效果,真正的目的还是需要绑定本站用户。 2.第三方登录所遵守的...

    1.为什么需要QQ登录网站?

            这没啥可说的,无非就是想利用QQ庞大的用户群体,提高本站流量,达到快速扩充本站用户的效果,当然,无论是QQ登录,还是其它第三方登录方式,这些都是辅助效果,真正的目的还是需要绑定本站用户。

    2.第三方登录所遵守的协议?

            这个我也不知道怎么说,反正就是,第三方登录,由于网站是个人或企业进行开发,这就有一个问题,我的网站用户的信息,怎么可以要其它企业知道呢?,所以啊,这就有了"第三者",意思就是,既然你们企业、个人信不过提供第三方登录的供应商,但又想用,没事,我oauth就做个好人,当当中间人,至于oauth的详细介绍,大家就去查查资料啦,反正就是这样啦...

    3.申请成为QQ互联开发者

            3.1.为什么需要申请QQ互联开发者?

                  这是肯定的啦,毕竟我们使用的是QQ互联啊

            3.2.申请步骤

                    3.2.1.QQ互联官网

                            

                            这里没啥可说的,该登录,该注册,自己看着办(我可是已经注册的)

                    3.2.2.申请成为开发者(审核需要1天时间,如果过了,联系客服)

                            

                            我这是已经是申请了的,无论通不通过,都会有一个测试使用的接口(只能自己QQ号登录),当然申请只是QQ需要知道你的基本信息。

                            如果是第一次使用QQ互联,请看下面

                                    A.填写开发者信息

                          

                                        因为这是已经是注册过的,有些步骤有些不一样,大家找到填写资料页就可以了,然后如实填写。注意,上传的身份主图片是本人手持身份证,然后上传图片。   

                                 如果审核通过,那么就下一步喽,如果没有,QQ互联会发送错误信息发送给你填写的邮箱,看错误信息,然后再进行修改,提交,也是一天审核时间。                

                                    B.创建网站应用

                                        

                                            填写资料:

                                                    1.这里的资料就随便填写

                                                             

                                                  2.回调域填写

                                                                

                                                    3.注册成功

                                                                

                       OK,如果创建应用成功,并且获取到了AppID与AppKey,那么就可以进行QQ登录开发了

    4.实现QQ互联需要的工具

                    4.1.放置QQ登录图标到页面(jsp\html)(这个无所谓,自己定义的也可以)

                       

                        不过值得注意的是,需要指定一个请求到我们自己编写的Controller或Servlet、Action,这个请求主要就是,

                        将QQ登录请求转发到QQ方,所以我们需要映射这个请求,再在我们自己的方法处理。

                    4.2.下载sdk

                        

                       找到基于Java的,然后下载,里面会有一个demo

                       SDK中的内容:

                               

                    Demo:

                            

                    核心要点:

                                

                           怎么我们前面放置的QQ登录图标中的请求?(demo中使用的servlet+jsp)

                            

                           那么它怎么跳转到QQ登录,以及怎么完成的回调呢?

                            这个问题呢,就得看下面啦

                    4.3.导入开发QQ互联所需要的文件,并配置

                            4.3.1.QQ互联依赖JAR包(添加到bin)

                                    

                            4.3.2.加入QQ互联配置文件到项目能够加载的地方(通常为src下)

                                    

                            4.3.3.修改配置文件

                                    

                    至此,QQ登录也就OK了,QQ登录成功之后,也就是在回调方法中,可以获取QQ用户的基本信息,什么头像、性别、别名,最重要的就是会返回一个OpenID,这个ID代表着QQ用户唯一标识,获取到这个OpenID,我们就可以进行处理一些东西了,比如通过OpenID查询数据库,如果用户存在这个OpenID,说明当前QQ用户已经绑定了本站用户,如果没有,就是绑定(登录或注册),只要携带这个OpenID到登录或注册页面,提交数据到登录或注册方法中,进行添加或更新操作。

                   4.4.3.怎么获取QQ用户的信息?

                            官网写得恶心了,我也是找了好久的资料,看了一些视频才知道的

                   // 获取AccessToken(AccessToken用于获取OppendID)
                AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
                // 用于接收AccessToken
                String accessToken = null, openID = null;
                // AccessToken有效时长
                long getExpireIn = 0L;
                getExpireIn = accessTokenObj.getExpireIn();
                // 获取AccessToken
                accessToken = accessTokenObj.getAccessToken();
                // 根据accessToken获取OpendId对象
                OpenID OpendIdObj = new OpenID(accessToken);
                // 通过对象获取[OpendId](OpendID用于获取QQ登录用户的信息)
                openID = OpendIdObj.getUserOpenID();
                // 通过OpenID获取QQ用户登录信息对象(Oppen_ID代表着QQ用户的唯一标识)
                UserInfo QQUserInfor = new UserInfo(accessToken, openID);
                // 获取用户信息对象(只获取nickename与Gender)
                UserInfoBean userInfoBean = QQUserInfor.getUserInfo();

       如果还是不行的话,想想哪个地方错了,没有按照步骤来,实在不行,还是看下面吧。

    5.具体实现(基于SSM;Spring+SpringMVC+Mybatis)

        5.1.放置QQ登录按钮与请求

                <!-- QQ登录 -->
                                          <a  href="${pageContext.request.contextPath}/QQlogin">
                                              <img src="${pageContext.request.contextPath}/images/Connect_logo_4.png" title="QQ登录"  alt="QQ登录"/>
                                          </a>

        5.2.映射QQ登录请求

                    /**
         * 跳转QQ登录
         */
        @RequestMapping(value = "/QQlogin", method = RequestMethod.GET)
        public void QQLogin(HttpServletRequest requeset, HttpServletResponse response) throws IOException {
            // 响应编码
            response.setContentType("text/html;charset=utf-8");
            // 跳转QQ登录页面
            try {
                response.sendRedirect(new Oauth().getAuthorizeURL(requeset));
            } catch (QQConnectException e) {
                e.printStackTrace();
            }
        }

        5.3.导入sdk与qqconnectconfig.properties并修改

        5.4.编写QQ回调函数

                /**
         * QQ登录成功后回调
         *
         * @param requeset
         * @param response
         * @return
         */
        @RequestMapping(value = "/AfterQQLogin")
        public String AfterQQLogin(HttpServletRequest request, HttpServletResponse response) throws IOException {
            
            // 存储用户信息
            Map<String, String> userinfor = null;
            //
            response.setContentType("text/html; charset=utf-8");
            try {
                // 获取AccessToken(AccessToken用于获取OppendID)
                AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);

                // 用于接收AccessToken
                String accessToken = null, openID = null;

                // AccessToken有效时长
                long getExpireIn = 0L;
                getExpireIn = accessTokenObj.getExpireIn();

                // 获取AccessToken
                accessToken = accessTokenObj.getAccessToken();
                // 根据accessToken获取OpendId对象
                OpenID OpendIdObj = new OpenID(accessToken);

                // 通过对象获取[OpendId](OpendID用于获取QQ登录用户的信息)
                openID = OpendIdObj.getUserOpenID();

                // 通过OpenID获取QQ用户登录信息对象(Oppen_ID代表着QQ用户的唯一标识)
                UserInfo QQUserInfor = new UserInfo(accessToken, openID);

                // 获取用户信息对象(只获取nickename与Gender)
                UserInfoBean userInfoBean = QQUserInfor.getUserInfo();

                // 通过信息对象获取参数
                // 别名
                String nickname = userInfoBean.getNickname();
                // 性别
                String gender = userInfoBean.getGender();
                gender = gender.equals("男") ? "0" : "1";
                // 用户头像对象
                Avatar avatar = userInfoBean.getAvatar();
                // 获取用户头像URL
                String head = avatar.getAvatarURL100();

                // 是否获取用户信息成功 0 成功 1不成功
                int result = userInfoBean.getRet();

                if (result != 0) {
                    // 没有正确获取用户信息,获取错误消息
                    String mes = userInfoBean.getMsg();
                    request.setAttribute("errors", mes);
                    return "index";
                }

                // 获取用户信息成功,将信息存储作用域
                userinfor = new HashMap<String, String>();
                userinfor.put("nickname", nickname);
                userinfor.put("gender", gender);
                userinfor.put("openId", openID);
                userinfor.put("head", head);

                // 通过OppendID查询数据库
                MapData user = userService.findUserByOpenID(openID);
                if (user != null) {// 已经与本地用户绑定
                    //获取数据库信息
                    String dbusername = user.getString("username");
                    String dbphone = user.getString("phone");
                    String dbpassword = user.getString("password");
                    if(dbphone == null && dbusername == null){
                        return "UserBind";
                    }
                    //已绑定手机或用户名
                    opendLogin(dbusername, dbpassword, null, null, dbphone,"oauth", request, response);
                    String id = user.getString("id");
                    String head_path = user.getString("head_path");
                    String genderdb  = user.getString("sex");
                    String nicknamedb =  user.getString("nickname");
                    //将qq用户信息填写到数据库
                    if(head_path == null || "".equals(head_path)){
                        head_path = head;
                    }
                    if(genderdb == null || "".equals(genderdb)){
                         genderdb = gender;
                    }
                    if(nicknamedb == null || "".equals(nicknamedb)){
                        nicknamedb = nickname;
                    }
                    //更新
                    userService.updateUserByQQ(nicknamedb, head_path, genderdb,openID,id);
                    
                    //插入日志
                    //logservice.insertLog(null, 2, new Date(), Integer.parseInt( id ), 0, nickname + "QQ用户登录", 2);
                    
                    return "redirect:/PersonCental";
                }
            } catch (QQConnectException e) {
                e.printStackTrace();
            }
                        // 不存在openID,代表着本地用户是没有与QQ进行绑定的,所以需要QQ互联的用户进行注册,如果不注册,无法关联本地用户
                        // 跳转到用户绑定页面,并且携带从QQ方获取到的信息
                        request.setAttribute("userinfor", userinfor);
                        return "UserBind";
    }

        5.5.OJBK奋斗

    如果还还还还还还还还还还还....不行,没事,洗洗睡吧....

     写这个文章呢,主要是自己碰到了,花了不少时间,一是方便后期回顾,二是,希望帮各位填填坑,就无需再在这花大量时间了。

    备注:如要转载,请备注原地址(毕竟写了一个多小时)

    展开全文
  • 第三方账号登录功能接入完全流程

    万次阅读 多人点赞 2019-04-11 14:51:14
    我们公司的用户中心之前没有接入第三方账号登录,虽然之前已经向公司提出过产品需求,因公司有一些战略考虑,也一直没有启动。这次趁着新游戏的接入工作,终于把这个项目提上日程。作为产品经理,我负...
    第三方账号虽然是一个小的功能点,但是在设计过程中,我们依然要结合自身产品的特点来确定产品方案和产品流程。

    本人在一家网络游戏公司工作,负责公司的基础平台性的产品。主要有用户中心、充值/支付平台、账号密保APP等。我们公司的用户中心之前没有接入第三方账号登录,虽然之前已经向公司提出过产品需求,因公司有一些战略考虑,也一直没有启动。这次趁着新游戏的接入工作,终于把这个项目提上日程。作为产品经理,我负责了开放平台申请、产品设计、交互原型、项目管理到最后的测试、发布等工作,参与了项目的全过程。

    产品初始方案:首先确定要选择哪几家账号进行接入,考虑到国内主流,我们选择了微信、QQ和微博,这三家是国内用户群最大的三个平台,没啥好说的。

    第三方账号登录流程

    一、       获取第三方账号登录授权

    获取授权的流程

    a)    申请第三方开放平台的账号

    三家开放平台的申请地址:

    微博开放平台

    http://open.weibo.com

    微信开放平台

    https://open.weixin.qq.com

    QQ互联平台

    https://connect.qq.com

    注1、  申请QQ登录一定要在QQ互联平台,不是在QQ开放平台(open.qq.com)

    注2、  申请过程中可能需要企业相关资质,如法人身份证、营业执照、税务登记证等,需要提前准备好。

    注3、  提交应用申请时,需要提交应用相关的信息(应用名称、介绍、图标、截图、授权回调域等),微信还需要提交《微信开放平台网站信息登记表》

    注4、  建议大家用企业账号申请第三方开放平台,不要使用个人的QQ、微信、微博和邮箱进行申请,这样可以避免申请人在职位变动或者离职后,导致账号管理的风险和交接麻烦。

    注5、  开放平台申请多数需要审核流程,因此在项目开始时,建议首先申请开放平台账号和创建应用,以免申请时间长影响开发进度。

    b)    微博登录申请

    微博登录申请流程

    登录微博开放平台后,需要申请应用。因为我们要申请的是网页版微博登录,因此选择【微链接 > 网站接入】应用类型,填好自己应用的名称和应用分类(选择网页应用类型),点击【创建】即可创建成功。应用创建成功后,可以获得Appid和AppSecret进行开发。

    这个时候应用还是未审核状态,在未审核的情况下,微博提供了测试信息,可以绑定最多15个微博账号进行测试。只有在开发完成、部署到线上地址后,才可以提交审核通过,审核通过后即可上线。

    c)     微信登录申请

    登录微信开放平台,选择【管理中心 > 网站应用 > 创建网站应用】,提交创建应用申请后,等待微信开放平台审核。审核通过后,可以获得应用的AppID和AppSecret进行开发。

    不过这个时候还不能使用微信登录功能,应用审核通过后还需要单独申请微信登录接口权限。提交申请,审核通过后才可正常使用微信登录接口。

    d)    QQ登录申请

    QQ登录需要在QQ互联平台进行申请(https://connect.qq.com/),QQ开放平台(open.qq.com)是用来将APP接入到腾讯旗下平台的,如QQ空间、应用宝等,不要搞混了,切记切记。

    登录后,选择【应用管理 > 创建应用】,当然这里我们选择创建网站应用,根据网站的指引,填写相关信息,提交等待审核。审核通过后,即可获得应用的AppID和AppKey。

    这里需要注意的是,QQ互联平台下如果有多个应用需要打通,则需要向互联平台申请打通UnionID,这样才可以保证用户用同一个QQ号登陆旗下不同应用。

    二、       第三方账号绑定流程

    a)    方案选择

    我参考了国内主流的几家互联网公司的第三方账号登录功能,发现主要分成两种设计方案,一种是账号强绑,像京东、小米等,在第三方账号授权通过后,需要用户绑定自己的账号;一种是今日头条、知乎,在第三方账号授权通过后,随机给用户生成一个账号或者调用第三方账号昵称,无需绑定账号,即可成功登录。

    因为我们公司是网络游戏公司,用户更多的使用场景是登录游戏客户端,目前游戏客户端暂时无法支持第三方账号登录,只能使用账号密码登录。因此我选择了强绑方案,这也是唯一的选择。

    b)    绑定流程一(未登录状态)

    用户在登录界面点击第三方账号,授权通过后,我们获得用户第三方账号的OpenID,由此判断用户的第三方账号之前是否绑定过,如果绑定过则直接登录成功。

    如果没有绑定过,则跳到账号绑定页面。账号绑定页面需要分成已有账号直接绑定,和没有账号,新注册账号进行绑定两种情况。

    当用户已有账号时,通过输入账号密码校验身份,校验通过后即可绑定成功/登录成功。

    当用户没有账号时,用户可通过注册新账号,注册成功后即可绑定成功/登录成功。

    c)     绑定流程二(登录状态)

    在个人账号中心里提供绑定管理的功能和界面,在用户已经登录的情况下,可以直接绑定第三方账号,只要获得授权通过,即可绑定成功。

    三、       第三方帐号解绑流程

    在个人账号中心>绑定管理中,可以对已经绑定的第三方账号进行解绑操作。在这里需要注意,由于用户长期使用第三方账号登录,实际上是由第三方账号承担了提交账号和保护账号安全的工作,因此在解绑第三方账号时,我们需要提醒用户,解绑以后只能通过本平台账号密码方式来登录。最好是提示用户记住当前账号

    京东的解绑账号功能

    另一方面,由于之前是由第三方账号“帮平台”做了账号安全的工作,因此在解绑账号的时候,我们需要考虑如何保护账号安全。因此可以在解绑的时候,对账号做一定的安全校验或安全保护。

    我们最终定的方案是 当用户在解绑时,需要校验手机短信验证码,如果没有绑定手机,则提示用户先去绑定手机。

    总结:

    第三方账号虽然是一个小的功能点,但是在设计过程中,我们依然要结合自身产品的特点来确定产品方案和产品流程。授权之后,是直接登录成功,还是绑定自己平台的账号,这是由自己产品特点决定。同时,对新增账号来说,如何设计用户账号的安全,也需要根据自己产品的特点和安全策略来设计适合的产品流程。

    本文由 @蓝翼 原创发布于产品壹佰

     

    展开全文
  • 第三方登陆功能的实现

    千次阅读 2017-12-25 10:43:14
    所谓的第三方登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录或者注册的功能。第三方登录主要省略了很多注册流程,这对于用户而言体验更加顺畅,通过这技术可以获得大量用户,用户一般也不愿意...

    所谓的第三方登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录或者注册的功能。第三方登录主要省略了很多注册流程,这对于用户而言体验更加顺畅,通过这技术可以获得大量用户,用户一般也不愿意注册过多的账号,通常习惯于将多个平台的账号密码设置成相同的方便记忆,所以我们也是抓住了用户的这一习惯,来应用了第三方登陆。下面开始进入正题。


    1.我们这里是使用的百度第三方登陆,首先要注册这个 " 百度开发者中心 " 平台的账户,用于接下来的开发调用。然后点击你账户上面的应用管理进行创建工程,创建工程只需要输入工程名就可以,然后点击提交。

    2.创建好工程,里面的基本信息有两个key一个API Key(client_id)和Secret Key(client_secret),获取到这两个key可以在之后的调用地址中使用到,现在根据授权应用场景来找到图中被我圈住的地方,将下面这个地址引用到你的前台页面中,给一个a标签填入href中进行点击调用,将之前所获取的API Key填入,再填入你的回调地址如http://10.2.21.10:8080/getCode,这是我的回调地址,中间的IP就是你的本地IP,然后在标签中可以随便引入一个logo图标来进行点击去调用百度第三方登陆。


    3.接下来就是在调用第三方登陆之前,需要将你的回调地址进行启动授权回调页的操作。这里主要就是将你的回调地址进行一个安全绑定,使百度第三方应用可以对你的回调地址进行相应。将你的回调地址放入图中的位置,其他的不需要填,直接点击确定,弹出保存成功即可。




    4.这个就是我们在点击你之前在项目中自定义的logo后去根据回调地址去进行的登陆授权,点击登陆并授权后跳转回调地址页面,这个回调地址去调用这个getCode方法并获取code参数。


    5.在同意授权并且获取code参数后将code与回调地址放入下面这个被我圈住的地址中,使用httpclient访问这个地址后获取到access_token。





    根据access_token获取用户信息,把用户信息存入到数据库中,然后这个用户就是你平台的用户了。

    到这里第三方登陆就完成了。希望能够给大家带来帮助。


    展开全文
  • 第三方登录功能的实现

    万次阅读 多人点赞 2017-03-28 17:13:04
    为什么要使用第三方登录:一般稍微作为一个大点的项目,为了提高用户的群体都会做第三方登录(如:QQ,微信,新浪等) 在往下看之前先注册第三方网站的开发者账号,创建应用完成审核。 QQ : QQ开发者平台 微信: 微信...
  • 什么是第三方登录

    2019-06-11 09:13:59
    1.什么是第三方登录 第三方登录是基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebook,Twitter等,国内的...
  • 四种第三方登录的方法

    千次阅读 2016-10-26 15:42:08
    对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享; 各大开放平台注册账户获取AppKey和AppSecret...
  • 第三方登录过程分析

    千次阅读 2019-06-30 01:10:48
    第三方登录原理解析 其实,第三方登录的模式都大同小异,基本都是OAuth2.0模式,我们以新浪微博的第三方登录举例: 新浪微博登录 官方文档:https://open.weibo.com/wiki/授权机制说明 我们来根据流程图一步步...
  • 现在有很多应用网站等等都支持第三方登录,例如我们都在用的qq、微信、支付宝等都能实现一键登录方便了很多,我们今天来讲一下QQ登录 第三方登录其实就是获取用户授权后的的头像账号等等,作为登陆的一个凭证。 要想...
  • 第三方登录的实现

    千次阅读 2019-04-12 10:30:05
    业内现在第三方注册的流程一般是什么样的? 前端通过授权方式获取第三方账号对应的unionId或openId,把它传给应用服务器,服务器判断这个第三方id有没有注册过如果没有就创建一个对应的新账号。 问题是,按照上面...
  • 第三方登录的原理

    万次阅读 2016-10-21 18:29:49
    摘要:OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。...同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的
  • 【第三方互联】三、腾讯QQ授权第三方登录

    万次阅读 多人点赞 2020-06-03 09:54:49
    当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联 一、获取 APP ID 和 APP Key 1、找到我的应用 ... 这样,我们就获取到了 APP ID 和 APP Key ...1、将 APP ID 、APP Key,以及该应用的信息放...
  • 在我们常用的App中经常会看到分享与第三方登录的功能,可以说分享与第三方登录已经成为了各大APP的必备功能。对于产品运行与推广来说,分享与第三方登录不仅能加强用户粘性,增加流量及新用户,也能提升用户存、留...
  • 四种第三方登录(附源码)

    万次阅读 多人点赞 2015-11-22 12:48:52
    对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享;各大开放平台注册账户获取AppKey和AppSecret ...
  • 在我们常用的App中经常会看到分享与第三方登录的功能,可以说分享与第三方登录已经成为了各大APP的必备功能。对于产品运行与推广来说,分享与第三方登录不仅能加强用户粘性,增加流量及新用户,也能提升用户存、留...
  • 今天我们来学习:码云(Gitee)授权第三方登录,相比之前 支付宝登录、腾讯QQ登录 以及 新浪微博登录 来说,相对于比较简单 一、准备工作 1、登录 码云官网 官网地址:https://gitee.com/ 注册、登录我们的...
  • Java 实现QQ第三方登录

    千次阅读 2018-12-28 14:19:47
    前言:很多时候我们都需要如下的第三方登录,用QQ帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户。   下面让我们来实现吧,可以参考官网文档,也可以看我下面的操作说明 QQ第三方登录接入指南...
  • 百度第三方登录

    千次阅读 2017-03-11 14:09:49
    接下来就是百度第三方登录具体步骤: 进入百度开发者中心 如果有账号就可以直接登录,如果没有就注册一个,手机号就可以注册. 登录成功,右上方就可以出现一个,申请记录 点击进去 然后再点击进入百度云官网...
  • 支付宝第三方登录

    千次阅读 2020-04-03 11:21:48
    最近做了第三方登录,看了官方文档,加上各种百度,依然踩过不少坑,今天和大家分享一下。 我是做的pc端的,贴张图。 首先: 有支付宝的实名账号,没有实名实名一下。 然后选择合作伙伴角色,好像有三个。...
  • php实现第三方登录

    千次阅读 2017-04-18 18:20:01
    网站为了方便用户快速的登录系统,都会提供使用知名的第三方平台账号进行快速登录的功能,第三方登录都是基于oAuth2.0标准来实现的。下面详细分析【基于账号密码授权】和【基于oAuth2.0标准授权】的原理和oAuth2.0...
1 2 3 4 5 ... 20
收藏数 192,003
精华内容 76,801
关键字:

第三方登录