apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析
一、访问入口
http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E
微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。
目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。
另外,为了方便开发者开发、测试自己的应用,我们还提供了Basic Auth的身份鉴权方式,但Basic Auth仅适用于应用所属的开发者自己调用接口。
OAuth2.0概述
OAuth2.0较1.0相比,整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式。
关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。
开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth2.0。
新版授权页改变了之前页面信息元素过多,对用户使用带来干扰的问题,登录和授权这两个行为已在新版中分离,用户能够更好地理解帐号登录和授权的过程,也为未来更多的功能带来承载空间。
当前一个最完整的授权分为三个步骤:登录-普通授权-高级授权(SCOPE)。但这三个步骤并不是必然出现,当用户的微博处于登录状态时,页面会自动跳转到普通授权页,“高级授权”同样也不是必须,如果开发者不申请SCOPE权限,系统会自动跳过此步骤,回调应用。我们在灰度测试中统计发现,只要合理的使用高级授权,开发者完全不必担心增加操作所带来的页面流失率问题,相反,一个清晰的授权体验更能获取用户的信任。
与此同时,授权项将会变的更加有条理,之前的普通权限将作为基础服务,用户不再有感知,与用户隐私相关的会归到高级授权,用户在授权时有权利逐条取消,进一步增强了隐私控制。
开发者需要根据各自的应用场景,选择适用的OAuth2.0授权流程:
- 1、PC端和Web网站,请参考:Web网站的验证授权(Authorization Code)
- 2、移动端应用可直接使用官方移动SDK,通过呼起微博客户端(未安装微博客户端的会呼起H5授权页)方式授权
- 3、H5轻应用,请参考 轻应用开发指南
二、鉴权方式分析
1、web应用授权
2、手机应用授权
3、授权的有效期
4、使用OAuth2.0调用API
三、分解结论
四、其他信息
OAuth2.0相关资源
以下SDK包含了OAuth2.0及新版API接口
下载Android SDK | 下载iOS SDK | 下载WP7 SDK |
下载PHP SDK(由SAE维护) | 下载Java SDK | 下载Python SDK |
下载Flash SDK | 下载Javascript SDK | 下载C# SDK |
移动开发SDK说明文档
Android SDK 说明文档 | iOS SDK 说明文档 | WP7 SDK 说明文档 |
其他参考资料
OAuth是一种国际通用的授权方式, OAuth2.0的官方技术说明可参看 http://oauth.net/2/
如果你仍在使用Oauth1.0,请进入浏览相关文档。
OAuth2.0 错误码
微博OAuth2.0实现中,授权服务器在接收到验证授权请求时,会按照OAuth2.0协议对本请求的请求头部、请求参数进行检验,若请求不合法或验证未通过,授权服务器会返回相应的错误信息,包含以下几个参数:
- error: 错误码
- error_code: 错误的内部编号
- error_description: 错误的描述信息
- error_url: 可读的网页URI,带有关于错误的信息,用于为终端用户提供与错误有关的额外信息。
错误信息的返回方式有两种:
1. 当请求授权Endpoint:https://api.weibo.com/2/oauth2/authorize 时出现错误,返回方式是:跳转到redirect_uri,并在uri 的query parameter中附带错误的描述信息。
2. 当请求access token endpoing:https://api.weibo.com/oauth2/access_token 时出现错误,返回方式:返回JSON文本。例如:
1
2
3
4
5
|
{
"error" : "unsupported_response_type" ,
"error_code" : 21329,
"error_description" : "不支持的ResponseType."
}
|
OAuth2.0错误响应中的错误码定义如下表所示:
错误码(error) | 错误编号(error_code) | 错误描述(error_description) |
---|---|---|
redirect_uri_mismatch | 21322 | 重定向地址不匹配 |
invalid_request | 21323 | 请求不合法 |
invalid_client | 21324 | client_id或client_secret参数无效 |
invalid_grant | 21325 | 提供的Access Grant是无效的、过期的或已撤销的 |
unauthorized_client | 21326 | 客户端没有权限 |
expired_token | 21327 | token过期 |
unsupported_grant_type | 21328 | 不支持的 GrantType |
unsupported_response_type | 21329 | 不支持的 ResponseType |
access_denied | 21330 | 用户或授权服务器拒绝授予数据访问权限 |
temporarily_unavailable | 21331 | 服务暂时无法访问 |
appkey permission denied | 21337 | 应用权限不足 |
OAuth2.0相关问题,查看 OAuth2.0相关问题
转载于:https://www.cnblogs.com/lexiaofei/p/7147054.html
apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析相关推荐
- Oauth2认证以及新浪微博开放平台应用
一.OAuth2.0概述 大部分API的访问如发表微博.获取私信,关注都需要用户身份,目前新浪微博开放平台用户身份鉴权有OAuth2.0和Basic Auth(仅用于应用所属开发者调试接口),新版接口 ...
- 新浪微博开放平台深度历险
作者:蒋宇捷(hfahe) 版权声明:原创作品,欢迎转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明. 10月21日补充 解决Ajax跨域的方法 可通过新浪提供的JS SDK解决,详 ...
- 阿里浪时代,新浪微博开放平台何去何从?
阿里投资新浪微博,普遍视为双赢局面.但满天飞的分析文章里,始终缺少从微博开放平台角度做的点评. 新浪微博一直给开放平台很高地位.去年 12 月架构调整,开放平台地位不降反升,成为独立部门,由副总褚达晨 ...
- PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用——建立微博应用的过程
PHP+新浪微博开放平台+新浪云平台(SAE) --新浪微博应用开发的一个解决方案 一.PHP+新浪微博开放平台+新浪云平台(SAE)方案的基础 二.建立微博应用的过程 三.PHP SDK中Demo程 ...
- 新浪微博开放平台API中page参数的使用方法
新浪微博开放平台API中page参数的使用方法 在做项目的时候,有时候要调用新浪微博开放平台的API.说实话,新浪微博的API功能很强大,但是API文档写的不是很清楚. 我在做项目的时候,调用了很多A ...
- 新浪微博开放平台开发-android客户端(2)
引言 最近不是太忙,花了一些时间学习android的应用开发.经过两个星期的学习,学习的同时还写了很多的demo示例,可以从基本控件及基本动画效果等示例demo集合大放送,持续更新下载. 从这个星期开 ...
- 新浪微博开放平台开发总结
经过快一个星期的倒腾,终于搞定了新浪微博开放平台的登录.绑定.发微博的功能.记录一下. 开发前的准备: 1. 申请新浪微博开放平台账号 http://open.weibo.com/ 2. 接入网站应用 ...
- IOS基于新浪微博开放平台微博APP
1.基于新浪微博开放平台APP源代码 2.gitHub源码下载地址 https://github.com/whzhaochao/SinaWeiBoOpen 3.用到的第三放开源库 3.1 RTLab ...
- c#调用新浪微博开放平台接口
在这篇文章中,我们将和大家分享如何通过.NET(C#)调用新浪微博开放平台接口. 使用新浪微博开放平台接口,需要先申请一帐号,申请方法:给@微博开放平台发送私信,或者给open_sina_mblog@ ...
最新文章
- 1.3.2 java程序的运行机制和jvm
- 小姐姐亲身体验:在阿里数据库科研团队实习是种怎样的体验?
- django 中使用 channels 实现websocket
- linux部署多个jar 会宕机_部署springboot+vue项目文档(若依ruoyi项目部署步骤)
- Js和jQuery的文档就绪函数以及执行次数
- wxpython 优秀的界面剂_珠海界面剂
- java list 命名空间,Spring JAVA 不同类加载器命名空间的理解
- ios android 性能测试工具,史上最全的 iOS 各种测试工具集锦
- 新手20天自学吉他入门
- http://nianjian.xiaze.com/tags.php?/%E4%B8%AD%E5%9B%BD%E7%B2%89%E4%BD%93%E5%B7%A5%E4%B8%9A%E5%B9%B4%
- Linux 服务器上安装 Virtuoso 数据库 并导入数据(超详细)
- c语言降序字母,怎么实现对数组的降序排序
- 讲解c程序设计语言的比喻,《C语言程序设计》论文关于比喻在《C语言程序设计》课程教学中的应用论文范文参考资料...
- 概率论基础知识(二) 随机变量及其分布
- 《关山月》赏析-(李白明月姑娘之五)
- python 过滤掉字符串中的回车符与换行符(\t\n)
- 曹祖圣VB.NET视频学习工具
- IntelliJ IDEA / Webstorm 2019.3 PJ方法(永久有效)
- 计算机用户名adm,adm那个电脑设置密码忘记了怎么处理
- Cadence中原理图模块化