A.概念
     OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。
 
 
B.使用3步骤
OAUTH认证授权就三个步骤,三句话可以概括:
1. 获取未授权的Request Token
2. 获取用户授权的Request Token
3. 用授权的Request Token换取Access Token
 
一、xx微博 ---> 用户的微博数据
1.成为新浪的开发者(加入新浪微博的开发阵营)
* 注册一个微博帐号,登录http://open.weibo.com
帐号:xxxxxx
密码:xxxxxx
* 填写开发者的个人信息(比如姓名、出生日期、上传身份证)

2.创建应用
* 假设应用名称叫做“xx微博”
* 应用创建完毕,默认就进入“开发”阶段,就具备了授权的资格
* 应用相关数据
App Key:3145626526 // 应用的唯一标识
App Secret:ee9de4d2431be061b22fe328332a1111
Redirect URI:http://www.baidu.com

3.用户对“xx微博”进行资源授权----OAuth授权2.0
1> 获取未授权的Request Token : 展示服务器提供商提供的登录页面
* URL : https://api.weibo.com/oauth2/authorize
* 参数
client_id true string 申请应用时分配的AppKey // 得知道给哪个应用授权
redirect_uri true string 授权回调地址 // 授权成功后跳转到哪个页面

2> 获取授权过的Request Token
* 授权成功后,自动跳转到回调页面,比如
http://www.baidu.com/?code=eabdc03cc4cc51484111b1cfd9c4cd0b
// 新浪会在回调页面后面拼接一个参数:授权成功后的Request Token

3> 根据授权过的Request Token换取一个Access Token
* URL : https://api.weibo.com/oauth2/access_token
* 参数
client_id true string 申请应用时分配的AppKey。
client_secret true string 申请应用时分配的AppSecret。
grant_type true string 请求的类型,填写authorization_code
code true string 调用authorize获得的code值。
redirect_uri true string 回调地址,需需与注册应用里的回调地址一致
* 返回结果
{
    "access_token" = "2.00vWf4GEUSKa7D739148f7608SXA9B";
    "expires_in" = 157679999;
    "remind_in" = 157679999;
    uid = 3758830533;
}
// uid == user_id == 当前登录用户的ID   == 用户的唯一标识

{
    "access_token" = "2.00vWf4GEUSKa7D739148f7608SXA9B";
    "expires_in" = 157679999;
    "remind_in" = 157679999;
    uid = 3758830533;
}

* access_token和uid的去呗
access_token : 1个用户给1个应用授权成功后,就获得对应的1个access_token,作用是:允许1个应用访问1个用户的数据
uid:1个用户对应1个uid,每1个用户都有自己唯一的uid
举例:
张三
李四

应用1
应用2

张三给应用1、应用2授权成功了:1个uid、2个access_token
李四给应用2授权成功了:1个uid、1个access_token
上面操作:产生了2个uid,3个access_token

二、授权过程中常见错误:
1.invalid_request
1> 没有传递必填的请求参数
2> 请求参数不对
3> URL中间留有空格

2.invalid_client
1> client_id的值传递错误(AppKey不对)

3.redirect_uri_mismatch
1> 回调地址不对

三、授权帐号注意

1.如果应用还没有经过新浪审核,只能访问自己或者其他15个测试帐号的微博数据a

最新文章

  1. highlight.js 代码高亮插件
  2. java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
  3. (1-2)配置的升级 - ASP.NET从MVC5升级到MVC6
  4. $.getJSON('url',function(data){}) 中回调函数不执行
  5. EF架构~真正被封装的排序方法,支持多列排序
  6. IOS网络第二天 - 03-JSON显示数据,调用本地视频播放,数据转模型
  7. 算法与数据结构题目的 PHP 实现:栈和队列 由两个栈组成的队列
  8. dom4j 学习总结
  9. EXCEL 数字+E+数字 自动识别为指数形式的解决办法
  10. Web service是什么?
  11. 清除xcode里面的mobileprovision文件
  12. 【S13】vector和string优先于动态分配的内存
  13. Qt之信号连接,你Out了吗?
  14. AOI
  15. jQuery Easy UI LinkButton(button)包
  16. 用递归的方式处理数组 && 把递归方法方法定义到数组的原型上 (这是一次脑洞大开的神奇尝试)
  17. 201521123068《Java程序设计》第4周学习总结
  18. Material Design之CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar
  19. cookie 简单用法
  20. MBTIles实现

热门文章

  1. Java基本类型
  2. window注册表
  3. android中的ellipsize设置(省略号的问题)
  4. 缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案
  5. TS数据结构分析
  6. 【Java】Java处理double相加的结果异常
  7. 【转】Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
  8. Jquery插件写法及extentd函数
  9. mybatis返回HashMap结果类型与映射
  10. UI篇--Android中TableLayout中的布局