http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8Ephp
微博开放接口的调用,如发微博、关注等,都是须要获取用户身份认证的。android
目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。ios
另外,为了方便开发者开发、测试本身的应用,咱们还提供了Basic Auth的身份鉴权方式,但Basic Auth仅适用于应用所属的开发者本身调用接口。git
OAuth2.0较1.0相比,整个受权验证流程更简单更安全,也是将来最主要的用户身份验证和受权方式。github
关于OAuth2.0协议的受权流程能够参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是咱们的受权服务器,Resource Server是API服务器。web
开发者能够先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,而后咱们根据应用场景各自说明如何使用OAuth2.0。api
新版受权页改变了以前页面信息元素过多,对用户使用带来干扰的问题,登陆和受权这两个行为已在新版中分离,用户可以更好地理解账号登陆和受权的过程,也为将来更多的功能带来承载空间。安全
当前一个最完整的受权分为三个步骤:登陆-普通受权-高级受权(SCOPE)。但这三个步骤并非必然出现,当用户的微博处于登陆状态时,页面会自动跳转到普通受权页,“高级受权”一样也不是必须,若是开发者不申请SCOPE权限,系统会自动跳过此步骤,回调应用。咱们在灰度测试中统计发现,只要合理的使用高级受权,开发者彻底没必要担忧增长操做所带来的页面流失率问题,相反,一个清晰的受权体验更能获取用户的信任。服务器
与此同时,受权项将会变的更加有条理,以前的普通权限将做为基础服务,用户再也不有感知,与用户隐私相关的会归到高级受权,用户在受权时有权利逐条取消,进一步加强了隐私控制。app
开发者须要根据各自的应用场景,选择适用的OAuth2.0受权流程:
下载Android SDK | 下载iOS SDK | 下载WP7 SDK |
下载PHP SDK(由SAE维护) | 下载Java SDK | 下载Python SDK |
下载Flash SDK | 下载Javascript SDK | 下载C# SDK |
Android SDK 说明文档 | iOS SDK 说明文档 | WP7 SDK 说明文档 |
OAuth是一种国际通用的受权方式, OAuth2.0的官方技术说明可参看 http://oauth.net/2/
若是你仍在使用Oauth1.0,请进入浏览相关文档。
微博OAuth2.0实现中,受权服务器在接收到验证受权请求时,会按照OAuth2.0协议对本请求的请求头部、请求参数进行检验,若请求不合法或验证未经过,受权服务器会返回相应的错误信息,包含如下几个参数:
错误信息的返回方式有两种:
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相关问题