首页 > 代码库 > iOS开发项目篇—17OAuth授权过程

iOS开发项目篇—17OAuth授权过程

iOS开发项目篇—17OAuth授权过程

一、网页演示

1.打开开放平台的地址

2.创建应用

3.填写个人开发者信息

4.创建新的应用

5.查看微博提供的api接口

6.在这里使用的是OAuth2

7.接口的完整说明

说明:提供的URL就是登陆界面

8.创建后的应用信息

9.不能直接访问提供的URL,还需要传入必要的参数

传入必要的参数:

client_id true string 申请应用时分配的AppKey // 得知道给哪个应用授权

redirect_uri true string 授权回调地址 // 授权成功后跳转到哪个页面

说明:

点击应用信息-->高级信息,设置授权回调页

传入两个参数后

点击文顶顶微博后,跳转到回调地址所在页面

10.关联账号

关联账号之后,可以使用该账号进行登录

注意:未通过审核的应用只能关联15个账号,除了添加的可以关联的这15个账号可以给应用授权之外,开发者自己也可以用自己的账号对应用进行授权,应用他的账号本身也是微博账号。

11.使用账号登录,授权

授权成功后,会自动跳转到回调页面

提示:注意清除网页缓存。

 

二、授权过程的说明

(一)文顶顶微博 ---> 用户的微博数据

1.成为新浪的开发者(加入新浪微博的开发阵营)

* 注册一个微博帐号,登录http://open.weibo.com

帐号:XXXXXXX

密码:XXXXX

* 填写开发者的个人信息(比如姓名、出生日期、上传身份证)

 

2.创建应用

* 假设应用名称叫做“黑马微博”

* 应用创建完毕,默认就进入“开发”阶段,就具备了授权的资格

* 应用相关数据

App Key:3141202626 // 应用的唯一标识

App Secret:ee9de4d2431be061b22fe328332a5228

Redirect URI:http://www.itheima.com

 

3.用户对“黑马微博”进行资源授权----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://http://www.cnblogs.com/wendingding/?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

(2)回调地址不匹配

 

(三)授权帐号注意

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

三、授权过程图示