OAuth授权

互联网中进行授权的方式有很多,但是业界比较认可的是OAuth授权。

第三方如果想要访问服务器提供商的用户资源时,需要先进行OAuth授权。

自己的app想要获取新浪的数据,就需要用户进行授权

例如:自己的微博 —> 获取用户的微博数据

  • 1.成为新浪的开发者 (加入新浪微博的开发者阵营)
    • 填写开发者的个人信息 账号 密码 OAuth-01
 就代表已经代表有了开发的资格了,后面的审核,上线。就是需要经过新浪审核,那么之后所有的用户都能通过我们自己开发的APP进行发布微博
  • 2.创建应用

    假设:我们应用的而名称就叫做 加祥微博
    进入开发阶段,就具备了授权的资格
    应用相关数据
    App Key:1534296149 // 应用的唯一标识
    App Secret:d79b554b713d9af939a7e7dbaf3aeef3
    
    Redirect URI:http://www.itheima.com
    
  • 3.用户就可以对我们自己开发的微博进行资源授权 --- OAuth授权

    这个授权是一个标准,所有的授权都要遵守这个标准,但是具体的标准步骤是可以不一样的。

OAuth授权步骤:总结起来就一共三个步骤

  1. 获取未授权的Request Token (这一步就是显示登录界面)
  2. 获取用户授权的Request Token (这一步其实就是用户进行登录)
  3. 用授权的Request Token 获取 Access Token (有了这个叫做访问标记的东西,我们就不需要用户的微博的账号密码了)

    1> 获取未授权的Request Token :展示服务器提供商提供的登录界面
    * URL : https://api.weibo.com/oauth2/authorize
    * 参数
    client_id     true     string     申请应用时分配的AppKey // 得知道给哪个应用授权
    redirect_uri     true     string     授权回调地址 // 授权成功后跳转到哪个页面
    

    OAuth-2

      2> 获取授权过的Request Token
      * 授权成功后,自动跳转到回调页面,比如
      * https://github.com/rookieJX?code=989907354bbaf5ecbe45d7f0aeace5d1
      * // 新浪会在回调页面后面拼接一个参数:授权成功后的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个测试帐号的微博数据

OAuth-03

OAuth-05

results matching ""

    No results matching ""