OAuth容许用户提供一个访问标记(专业点叫作令牌)给第三方网站,一个访问标记(专业点叫作令牌)对应一个特定的第三方网站,同时该访问标记(专业点叫作令牌)只能在特定的时间内访问特定的资源ios
说白了就是:也就是说用户在访问第三方web或应用的时候,第三方在不知道用户的帐号和密码的状况下 通过用户受权后就能够获取用户在服务商哪里存储的文章,微博信息等等信息web
1、OAuth受权必须通过三个步骤api
第一步:获取未受权的Request Token (请求标记) 跳转到服务商的登陆页面安全
第二步:获取用户受权Request Token(请求标记) 用户输入帐号密码进行登陆受权服务器
第三步:用受权过的Request Token(请求标记) 换取Access Token (访问标记)app
以上三个步骤是OAuth受权的必须步骤 ,可能不少公司的受权方式各有不一样,可是大体步骤是同样的测试
下面以新浪微博为例子 介绍下如何进行OAuth受权:
网站
1.首先你要成为新浪的开发者 点击这里进入开发者网站:http://open.weibo.comui
进入后注册一个帐号 添加开发者我的信息 ,你能够直接用你的微博帐号登陆 而后加入开发者便可 详细步骤这里再也不赘述url
2.建立应用 如何建立应用,直接点击顶部导航栏的个人应用 便可 建立
*假设你建立的应用名称加作 "程序源微博"
*应用建立完毕默认 就进入"开发阶段" 就具有了受权资格
*这个时候点击个人应用 --> 应用信息 你会看到以下的信息
App Key:917518064 应用的惟一标识
App Secret:b18853174e2902fd05b04dc34d7be792 密钥
应用地址:https://itunes.apple.com/cn/genre/ios/id36?mt=8
这是时候咱们还须要设置一个回调页面,就是受权成功后跳转的页面 如何设置?
点击编辑 而后输入你要回调的页面网址便可
2.有了上面的设置以后 咱们就能够进行资源受权了 咱们如今都是OAuth受权2.0
(1)首先第一步获取未受权的Request Token 来到服务器的登陆界面
*新浪提供的页面是这个页面:https://api.weibo.com/oauth2/authorize
*必需要传递的两个参数:
client_id (string类型) 申请应用时分配的AppKey // 得知道给哪一个应用受权
redirect_uri (string类型) 受权回调地址 // 受权成功后跳转到哪一个页面
也就是说咱们要正确的来到服务器提供的受权登陆界面完整的url地址应该是这样的:
https://api.weibo.com/oauth2/authorize?client_id=917518064&redirect_uri=http://www.cnblogs.com/syios
打开上面的地址你会看到以下界面:
此时咱们输入咱们的微博帐号 这里也能够本身给本身受权也就是说你能够用户刚刚建立应用的帐号 对你的应用进行受权
当咱们点击登陆后 ,此次受权就成功了,固然若是你是第一次受权可能看到不是上面的界面 而是受权界面 这个时候你点击受权便可
登陆成功后回跳转到回调页面
(2)获取受权过的Request Token
受权成功后回自动跳转到回调页面
你会发现新浪会在回调页面后面拼接一个参数 这个参数code 就是受权成功后的 Request Token (请求标记)
(3)根据受权过Request Token(请求标记) 获取一个Access Token(访问标记)
这个时候新浪提供了另一个地址 用来获取访问标记
URL : https://api.weibo.com/oauth2/access_token
固然也必需要传以下的参数 才能成功获取访问标记:
client_id string 申请应用时分配的AppKey。
client_secret string 申请应用时分配的AppSecret。
grant_type string 请求的类型,填写authorization_code
code string 调用authorize得到的code值。
redirect_uri string 回调地址,需需与注册应用里的回调地址一致
这个时候咱们只须要将全部的参数经过POST方式发送给新浪服务器以后咱们会获得服务器的返回数据 返回结果以下:
{
"access_token" = "2.00vWf4GEUSKa7D739148f7608SXA9B";
"expires_in" = 137596133;
"remind_in" = 137596133;
uid = 1258537523;
}
access_token: 就是咱们须要的访问标记 咱们只须要获取这个标记 保存便可
uid:表示当前登陆用户的ID
这里须要你们明白一个知识点:
access_token : 1个用户给1个应用受权成功后,就得到对应的1个access_token,做用是:容许1个应用访问1个用户的数据
uid:1个用户对应1个uid,每1个用户都有本身惟一的uid
举例:
张三 /李四
应用1 /应用2
张三给应用一、应用2受权成功了:1个uid、2个access_token
李四给应用2受权成功了:1个uid、1个access_token
上面操做:产生了2个uid,3个access_token
3.受权过程当中的常见错误
1.invalid_request
1> 没有传递必填的请求参数
2> 请求参数不对
3> URL中间留有空格
2.invalid_client
1> client_id的值传递错误(AppKey不对)
3.redirect_uri_mismatch
1> 回调地址不对
提醒:受权账号注意 若是应用尚未通过新浪审核,只能访问本身或者其余15个测试账号的微博数据
好了,关于OAuth受权 就说这么多了