• OAuth及第三方登录


            现在的生活中运用互联网的有好多地方,我们既要申请微博,申请博客,申请邮箱等等;哪怕登录一个小网址看点东西都要注册登录,不过现在好多了;有了第三方登录,再也不用担心这不够用的脑子整天记忆账号和密码了,只要有qq,一般情况下都能解决,既方便又快捷。

            我呢,这几天就开始接触这个东西,开始学,一边学一边记吧算是。

        一.OAuth开放式授权

            OAuth  is  short  for Open  Authorization  

           这个东西是什么呢,就是让第三方网站在不知道用户qq号和密码的情况下也能登录。下面就用一个图来说明一下它的运行机制吧

       

     

             其特点就是开放  安全   简易

      二、功能

    OAuth1.0版本发布于2007年末:该版本有缺陷,曾经因为这个缺陷使一个公司损失巨大,现在已经不用。

     

    OAuth2.0版本发布于2010年初:至今仍在使用。

     

    QQ用户授权第三方网站使用其QQ账号相关的信息

     

    获取授权后,在符合权限规则的情况下访问各种API;如一键分享。

     

    第三方登录并不会将用户信息拷贝一份放在自己的数据库,那样大家都会觉得不安全了。只是利用了一个OAuth平台来完成这个功能

     三、三个重要步骤

           第三方页面请求QQ的OAuth页面

              用户在OAuth页面输入qq号和密码

              腾讯QQ的OAuth页面将登陆结果返回给第三方网站

          (1)、请求OAuth登录页  

                    Request Token URL--未授权的令牌请求服务地址       

                    第三方网站请求QQ登陆页面时须使用带有特定参数的URL。

                    每个第三方网站接入QQ登陆之前需要到QQ互联官网注册一下(https://connect.qq.com/),提交一份申请的材料。说明一下接入站点的描述,域名,回调地址等。通过之后会得到一组APPID                          和APPKEY.

                    例如以下地址:

                   https://graph.qq.com/oauth/......?......&client_id=100493579&......&redirect_uri=http:/www.weibo.com/......

     

               这里的clirnt_id对应的就是APPID。OAuth页面可以通过这个APPID来判断这个站点是不是已经注册过的平台,并不是每个站点都可以使用。

         (2)、用户使用QQ号登陆并授权

                    上面的redirect_uri就是回调地址,在用户登录成功后跳转的页面。

                    http://www.weibo,com/user.qqcallback?code=xxxxxxxxxxxxx.....


         (3)、返回登录结果

                    在php页面可以获取上面地址中的code大致可以确定登录了。但是为了更加安全,所以需要第三方网站再次请求一个URL地址(用户授权的令牌请求服务地址);用户QQ登录授权之后需要请求           的一个带有特定参数的URL,这个URL中有参数APPID和APPKEY,又多了一个第三方站点与腾讯QQ的OAuth页面的交互,使code的传输更加安全。(code在有限时间内有效,一般时间不超过一分钟)

     四、AccessToken

              当登录之后第三方站点拿到一个当前用户的AccessToken,有这个AccessToken就可以调用相应的API了。每次访问API都要拼接一个URL,并且都要用上AccessToken作为令牌,为了安全也一般会         用POST方式。

              

         可以将返回的数据用以下方法转换成PHP对象

                 

                 AccessToken--具有较长生命周期(10天或者更长)

                 过期之后有两种方法重新获取:

                 1.重新用qq号登录

                 2.User Authorization URL中指定参数  ....&need_refresh_token=true&......意为在返回结果中需要携带一个AccessToken。

     

             更加专业的术语我就不照搬了,我按照我理解的方式简单的说了一下这个第三方登录的前奏,想了解更多的OAuth知识的话可以

            戳这里-->http://wiki.connect.qq.com/oauth2-0%E7%AE%80%E4%BB%8B

           关于第三方登录我还会继续添加内容的,这只是个开始哦

     

     

     

  • 相关阅读:
    Java学习之路----计算圆形的面积和周长
    数据库系统的基本组成内容
    软件测试的含义以及测试的对象
    wg sync.WaitGroup执行顺序
    go channel
    字符串操作
    scanf
    py停止工作
    jira索引失败
    py kafka
  • 原文地址:https://www.cnblogs.com/xiaonannan/p/6873984.html
Copyright © 2020-2023  润新知