OAuth授权
互联网中进行授权的方式有很多,但是业界比较认可的是OAuth授权。
第三方如果想要访问服务器提供商的用户资源时,需要先进行OAuth授权。
自己的app想要获取新浪的数据,就需要用户进行授权
例如:自己的微博 —> 获取用户的微博数据
- 1.成为新浪的开发者 (加入新浪微博的开发者阵营)
- 填写开发者的个人信息 账号 密码
就代表已经代表有了开发的资格了,后面的审核,上线。就是需要经过新浪审核,那么之后所有的用户都能通过我们自己开发的APP进行发布微博
2.创建应用
假设:我们应用的而名称就叫做 加祥微博 进入开发阶段,就具备了授权的资格 应用相关数据 App Key:1534296149 // 应用的唯一标识 App Secret:d79b554b713d9af939a7e7dbaf3aeef3 Redirect URI:http://www.itheima.com
3.用户就可以对我们自己开发的微博进行资源授权 --- OAuth授权
这个授权是一个标准,所有的授权都要遵守这个标准,但是具体的标准步骤是可以不一样的。
OAuth授权步骤:总结起来就一共三个步骤
- 获取未授权的Request Token (这一步就是显示登录界面)
- 获取用户授权的Request Token (这一步其实就是用户进行登录)
用授权的Request Token 获取 Access Token (有了这个叫做访问标记的东西,我们就不需要用户的微博的账号密码了)
1> 获取未授权的Request Token :展示服务器提供商提供的登录界面 * URL : https://api.weibo.com/oauth2/authorize * 参数 client_id true string 申请应用时分配的AppKey // 得知道给哪个应用授权 redirect_uri true string 授权回调地址 // 授权成功后跳转到哪个页面
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
用户需要对我们自己的微博进行资源授权 (用户输入账号和密码进行登录)
二、授权过程中常见错误:
invalid_request
1> 没有传递必填的请求参数 2> 请求参数不对 3> URL中间留有空格
invalid_client
1> client_id的值传递错误(AppKey不对)
redirect_uri_mismatch
1> 回调地址不对
三、授权帐号注意 1.如果应用还没有经过新浪审核,只能访问自己或者其他15个测试帐号的微博数据