现在的生活中运用互联网的有好多地方,我们既要申请微博,申请博客,申请邮箱等等;哪怕登录一个小网址看点东西都要注册登录,不过现在好多了;有了第三方登录,再也不用担心这不够用的脑子整天记忆账号和密码了,只要有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

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

OAuth及第三方登录的更多相关文章

  1. CocoaPods的安装及使用/利用开源库Diplomat实现分享及第三方登录/git的使用

    <<史上最简洁版本>> 1.gem sources -l查看 当前的源 //1.1 sudo -i..以下都是以管理员的身份来操作的 2.gem sources --remov ...

  2. OpenID 和 OAuth 的区别及第三方登录的安全隐患分析

    转自:http://itindex.net/detail/48552-openid-oauth-%E6%96%B9%E7%99%BB 发表时间:2014-03-13 19:09 | 作者:天梯梦 出处 ...

  3. Flask 微博三方登录

    1.进入微博开发平台(https://open.weibo.com/),注册账号,填写开发者信息 2.创建应用.创建应用完成后,可以在"我的应用 - 应用信息"中查看您所创建应用的 ...

  4. PHP实现qq三方登录

    除了qq第三方登录外.还有微博,微信等第三方登录 qq第三方登录,遵循oauth2.0协议 这里是说明http://www.cnblogs.com/yx520zhao/p/6616686.html q ...

  5. 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)

    微信.QQ.新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483 微信.QQ.新浪微博等第三方登录,你想知道的都在这了(下):h ...

  6. SpringCloud微服务实战——搭建企业级开发框架(四十一):扩展JustAuth+SpringSecurity+Vue实现多租户系统微信扫码、钉钉扫码等第三方登录

      前面我们详细介绍了SSO.OAuth2的定义和实现原理,也举例说明了如何在微服务框架中使用spring-security-oauth2实现单点登录授权服务器和单点登录客户端.目前很多平台都提供了单 ...

  7. 对QQ、微信等第三方登录的几个思考

    转自:http://www.jianshu.com/p/7f282dfc16fc 今天聊聊注册.登录环节中很常见的第三方登录,如QQ.微信.支付宝.新浪微博等.虽然这些产品的开放平台都提供了标准的接入 ...

  8. ASP.NET MVC中三方登录: 微软、谷歌、Office365

    创建一个MVC的工程,在Startup.Auth.cs文件中,我们能看到这样的一些代码: 这其实是微软已经帮我们实现好的三方登录的接口,我们只需要创建相应的开发者账号,并在其中配置好跟我们应用程序相关 ...

  9. AppDelegate减负之常用三方封装 - 友盟分享 / 三方登录篇

    之前完成了 AppDelegate减负之常用三方封装 - 友盟推送篇: http://www.cnblogs.com/zhouxihi/p/7113511.html 今天接着来完成 - 友盟分享和三方 ...

随机推荐

  1. Uva 11029 Leading and Trailing (求n^k前3位和后3位)

    题意:给你 n 和 k ,让你求 n^k 的前三位和后三位 思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0 资料:求n^k的前m位 博客连接地址 代码: #include < ...

  2. 从零开始用 Flask 搭建一个网站(一)

    前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ...

  3. PixiJS - 基于 WebGL 的超快 HTML5 2D 渲染引擎

    Pixi.js 是一个开源的HTML5 2D 渲染引擎,使用 WebGL 实现,不支持的浏览器会自动降低到 Canvas 实现.PixiJS 的目标是提供一个快速且轻量级的2D库,并能兼容所有设备.此 ...

  4. c#FTP操作类,包含上传,下载,删除,获取FTP文件列表文件夹等Hhelp类

    有些时间没发表文章了,之前用到过,这是我总结出来关于ftp相关操作一些方法,网上也有很多,但是没有那么全面,我的这些仅供参考和借鉴,希望能够帮助到大家,代码和相关引用我都复制粘贴出来了,希望大家喜欢 ...

  5. shell初步了解

    shell的类型 查看用户所用的shell程序,在/etc/passwd 文件中的第七个字段(好像就是最后一个,主要是bash shell) 还有一个默认shell是/bin/sh,它作为默认的系统s ...

  6. Java线程详解----借鉴

    Java线程:概念与原理 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程 ...

  7. sptt规范介绍

    相关资源 如何开发sptt工程的原子操作 移动端测试方案--sptt sptt规范 一个标准的sptt工程的目录如下: [sptt-project] | -- [ios] | | -- [atoms] ...

  8. C#数据结构之串

    串(string)是n(n>=0)个字符组成的有限序列. 由于串中的字符都是连续存储的,在C#中有恒定不变的特性.一经创建就保持不变. 为了区别C#中的string,因此以stringDS类模拟 ...

  9. Linux-配置vim开发环境

    vim是一个类似于vi的著名的功能强大.高度可定制的文本编辑器,在vi的基础上改进和增加了很多特性.vim是纯粹的自由软件. 为了满足使用者的要求,将vim界面配置为自己想要的界面类型也变得流行起来. ...

  10. JavaEE开发之SpringMVC中的自定义消息转换器与文件上传

    上篇博客我们详细的聊了<JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术>,本篇博客依然是JavaEE开发中的内容,我们就来聊一下SpringMVC中的自定义消息转发器 ...