首页 > 代码库 > apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析

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文本。例如:

 

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相关问题

apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析