微博开放平台
微连接
移动应用
网站接入
电商服务商
电商商家
数据服务
数据服务
合作伙伴
微博支付
轻应用
粉丝服务
文档
推广
我的应用
登录
weibo
开发文档
首页
平台政策与指引
概述
平台公约
新手指南
开发者协议
应用运营管理规范
微连接分级管理办法
应用审核产品指南
应用安全开发注意事项
平台应用设计规范
微服务接入指南
微博登录接入
用微博帐号登录
授权机制
移动应用接入
移动应用介绍
移动应用SSO授权
微博Deep Link
媒体接入平台
头条文章开放接口
视频上传开放接口
电商接入平台
电商服务商接入
电商商家端接入
电商平台能力接口
粉丝服务平台
粉丝服务平台
新手接入指南
微信开发者迁移指南
接收消息
发送消息
自定义菜单
用户管理
生成带参数的二维码
Fans Service Platform
商业接口
商业数据接入指南
订阅服务手册(中文版)
订阅服务手册(英文版)
商业接口-REST API
商业数据常见问题
网站接入
网站接入介绍
微博API
微博API
接口访问频次权限
资源下载
SDK
微博标识下载
常见问题
联系我们
工具箱
链入页面
链出更改
特殊页面
查看源代码
跳转到:
导航
,
搜索
根据下列原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
=授权机制= <div class="wiki_txtJ"> 微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。另外,为了方便开发者开发、测试自己的应用,我们还提供了Basic Auth的身份鉴权方式,但Basic Auth仅适用于应用所属的开发者自己调用接口。 </div> ==OAuth2.0概述== <div class="wiki_txtJ"> OAuth2.0较1.0相比,整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式。 关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。 {{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/oAuth2_01.gif}} 开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth2.0。 </div> '''接口文档''' <table class="wiki_table" border="0" cellspacing="0" cellpadding="0" style="width:100%"> <tr> <th class="wiki_table_thfirst" style="width:180px">接口 </th><th>说明 </th></tr> <tr> <td class="wiki_table_tdfirst">[[Oauth2/authorize|OAuth2/authorize]] </td><td>请求用户授权Token </td></tr> <tr> <td class="wiki_table_tdfirst">[[Oauth2/access_token|OAuth2/access_token]] </td><td>获取授权过的Access Token </td></tr> <tr> <td class="wiki_table_tdfirst">[[Oauth2/get_token_info|OAuth2/get_token_info]]{{Icon_new2}} </td><td>授权信息查询接口 </td></tr> <tr> <td class="wiki_table_tdfirst">[[Oauth2/revokeoauth2|OAuth2/revokeoauth2]]{{Icon_new2}} </td><td>授权回收接口 </td></tr> <tr> <td class="wiki_table_tdfirst">[[Oauth2/get_oauth2_token|OAuth2/get_oauth2_token]] </td><td>OAuth1.0的Access Token更换至OAuth2.0的Access Token </td></tr> </table> '''注意事项''' **1、OAuth2.0授权无需申请,任何应用都可以使用。如果开发者需要更长的授权有效期参考本文档授权有效期部分。 **2、如果你是站外网页应用或客户端应用,出于安全性考虑,需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0,填写地址:<span style="color:#FF7D13;">“我的应用>应用信息>高级信息”</span>,对于客户端,我们也提供了默认的回调页地址。详细请查看授权页功能部分。 ==授权页== {{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/OAuth2_intro.png}} 新版授权页改变了之前页面信息元素过多,对用户使用带来干扰的问题,登录和授权这两个行为已在新版中分离,用户能够更好地理解帐号登录和授权的过程,也为未来更多的功能带来承载空间。 当前一个最完整的授权分为三个步骤:登录-普通授权-高级授权(SCOPE)。但这三个步骤并不是必然出现,当用户的微博处于登录状态时,页面会自动跳转到普通授权页,“高级授权”同样也不是必须,如果开发者不申请SCOPE权限,系统会自动跳过此步骤,回调应用。我们在灰度测试中统计发现,只要合理的使用高级授权,开发者完全不必担心增加操作所带来的页面流失率问题,相反,一个清晰的授权体验更能获取用户的信任。 与此同时,授权项将会变的更加有条理,之前的普通权限将作为基础服务,用户不再有感知,与用户隐私相关的会归到高级授权,用户在授权时有权利逐条取消,进一步增强了隐私控制。 {{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/oauth2v3.png}} ==应用场景== <div style="margin:15px 0;"> 开发者需要根据各自的应用场景,选择适用的OAuth2.0授权流程: **1、PC端和Web应用,请参考:Web应用的验证授权(Authorization Code) **2、移动端应用,可以直接使用官方移动SDK,通过呼起微博客户端(未安装微博客户端的会呼起H5授权页)方式使用授权 **3、H5轻应用,请参考 [[轻应用开发指南]] </div> <div class="wiki_title_withline">Web应用的验证授权</div> {{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/oAuth2_02.gif}} 1. 引导需要授权的用户到如下地址: <pre> https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI </pre> 2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE 3. 换取Access Token <pre> https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE </pre> (其中client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET可以使用basic方式加入header中) 返回值 { "access_token":"SlAV32hkKG", "remind_in ":3600, "expires_in":3600 } 4. 使用获得的OAuth2.0 Access Token调用API ===移动应用的验证授权=== 移动应用(主要指Mobile Native App),建议使用官方提供的支持SSO授权的SDK, 可以大大简化授权流程开发,降低开发成本。 '''需要说明的是,移动应用请使用open.weibo.cn上的授权接口(普通的发博,评论等资源API依旧调用weibo.com接口)''' 参考:[[移动客户端接入]] ===站内应用的验证授权=== 参考: [[站内应用开发指南]] <div style="display:none"> 微博OAuth1.0的Access Token不会过期,只有用户手工撤销授权或新浪收回您的app访问权限时Access Token才会失效。但OAuth2.0的过期时间通常为1天。 Refresh Token 是 Access Grants 的一种,在获取Access Token时,认证服务器将返回相应的Refresh Token, 如果Access Token过期,就可以用Refresh Token去刷新。 [http://www.sinaimg.cn/blog/developer/wiki/oAuth2_05.gif 基本流程] 1当你调用API接口返回Access Token过期时,你可以调用oauth2/access_token并传入refresh_token: <pre> https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=refresh_token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&refresh_token=… </pre> 返回值 { “access_token”:”SlAV32hkKG”, “expires_in”:3600 } 2.使用获得的OAuth2.0 Access Token调用API 注:Refresh Token需要单独申请 </div> ==使用OAuth2.0调用API== 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数传递参数名为 access_token https://api.weibo.com/2/statuses/public_timeline.json?access_token=abcd 2. 在header里传递 形式为在header里添加Authorization:OAuth2空格abcd 这里的abcd假定为Access Token的值 其它接口参数正常传递即可。 注:所有的资源API都部署在weibo.com域下,仅有移动端的授权接口在open.weibo.cn域。 所以任何一种应用类型,调用的都是weibo.com上的资源API。 ==授权有效期== 程序一定要具备足够的健壮性,调用接口时判断接口的返回值,如果用户的access_token失效,需要引导用户重新授权。失效原因有以下几个: *#用户取消了对应用的授权 *#access_token自然过期 *#用户修改了密码,冻结了对应用的授权 *#新浪发现用户帐号被盗,冻结了用户对应用的授权 授权级别和OAuth2.0 access_token有效期对应表: <table class="wiki_table" border="0" cellspacing="0" cellpadding="0"> <tr> <th class="wiki_table_thfirst" scope="col">授权级别</th> <th scope="col">测试</th> <th scope="col">普通</th> <th scope="col">中级</th> <th scope="col">高级</th> </tr> <tr> <td>授权有效期</td> <td>1天</td> <td>7天</td> <td>30天</td> <td>90天</td> </tr> </table> 注: #只有未过文案审核的应用才处于测试级别。 #应用所属开发者授权应用时,有效期为5年。 <strong>access_token自动延续方案{{Icon_new2}}</strong> 如果用户在授权有效期内重新打开授权页授权(如果此时用户有微博登录状态,这个页面将一闪而过),那么新浪会为开发者自动延长access_token的生命周期,请开发者维护新授权后得access_token值。 <strong>如何查询当前应用的授权级别</strong> 你可以在 http://open.weibo.com/apps/应用APPKEY/privilege/oauth 上查询当前应用的授权级别。 <strong>如何计算某个用户的access_token过期时间?</strong> 开发者可以通过两种方式计算: *#用户授权时,oauth2/access_token接口返回的expires_in值就是access_token的生命周期。 *#从上述对应表中,找到应用所对应的授权有效期,过期时间 = 用户授权时间 + 授权有效期 <strong>如何申请授权有效期</strong> 可在应用控制台,接口管理标签下的授权机制选项中进行在线申请。 ==授权页功能== ===scope=== scope是OAuth2.0新版授权页提供的一个功能,通过scope,平台将开放更多的微博核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新OAuth2.0授权页中有权利选择赋予应用的功能。 scope开放的接口文档:[[Scope|接口文档]] ===客户端默认回调页=== 通常Mobile Native App没有服务器回调地址,您可以在应用控制台授权回调页处填写平台提供的默认回调页,该页面用户不可见,仅用于获取access token。 OAuth2.0客户端默认回调页:https://api.weibo.com/oauth2/default.html ===强制登录=== 授权页会默认读取当前用户的微博登录状态,如果你想让用户重新登录,请在调用authorize接口时传入参数:forcelogin=true,默认不填写此参数相当于forcelogin=false。 ===取消授权回调页=== 开发者可以在应用控制台填写取消授权回调页,当用户取消你的应用授权时,开放平台会回调你填写的这个地址。并传递给你以下参数: source:应用appkey uid :取消授权的用户 auth_end :取消授权的时间 ==OAuth2.0相关资源== ===以下SDK包含了OAuth2.0及新版API接口=== <table border="0" cellspacing="0" cellpadding="0" style="width:100%;margin-left:15px"> <tr> <th class="wiki_table_thfirst" style="width:250px"> </th><th> </th><th> </th></tr> <tr> <td class="wiki_table_tdfirst">[https://github.com/mobileresearch/weibo_android_sdk 下载Android SDK]</td> <td>[https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth 下载iOS SDK]</td> <td>[http://weibowp7sdk.codeplex.com/ 下载WP7 SDK]</td> </tr> <tr> <td class="wiki_table_tdfirst">[http://code.google.com/p/libweibo/ 下载PHP SDK(由SAE维护)]</td> <td>[http://code.google.com/p/weibo4j/ 下载Java SDK]</td> <td>[http://code.google.com/p/sinaweibopy/ 下载Python SDK]</td> </tr> <tr> <td class="wiki_table_tdfirst">[http://code.google.com/p/weibosdk/ 下载Flash SDK] </td><td>[http://open.weibo.com/wiki/Weibo-JS_V2 下载Javascript SDK] </td><td>[http://weibosdk.codeplex.com/ 下载C# SDK]</td></tr> </table> ===移动开发SDK说明文档=== <table border="0" cellspacing="0" cellpadding="0" style="width:100%;margin-left:15px"> <tr> <th class="wiki_table_thfirst" style="width:250px"> </th><th> </th><th> </th></tr> <tr> <td class="wiki_table_tdfirst">[[移动应用SSO授权|Android SDK 说明文档]]</td> <td>[[移动应用SSO授权|iOS SDK 说明文档]]</td> <td>[[WP7_SDK说明文档|WP7 SDK 说明文档]]</td> </tr> </table> ===其他参考资料=== OAuth是一种国际通用的授权方式, OAuth2.0的官方技术说明可参看 http://oauth.net/2/ 如果你仍在使用[[Oauth|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文本。 例如: { *"error":"unsupported_response_type", *"error_code":21329 * "error_description":"不支持的 ResponseType." } OAuth2.0错误响应中的错误码定义如下表所示: <table class="wiki_table" border="0" cellspacing="0" cellpadding="0"> <tr> <th class="wiki_table_thfirst">错误码(error) </th><th> 错误编号(error_code) </th><th> 错误描述(error_description) </th></tr> <tr> <td class="wiki_table_tdfirst">redirect_uri_mismatch </td><td>21322 </td><td>重定向地址不匹配 </td></tr> <tr> <td class="wiki_table_tdfirst">invalid_request </td><td>21323 </td><td>请求不合法 </td></tr> <tr> <td class="wiki_table_tdfirst">invalid_client </td><td>21324 </td><td>client_id或client_secret参数无效 </td> </tr> <tr> <td class="wiki_table_tdfirst">invalid_grant </td><td>21325 </td><td>提供的Access Grant是无效的、过期的或已撤销的 </td> </tr> <tr> <td class="wiki_table_tdfirst">unauthorized_client </td><td>21326 </td><td>客户端没有权限 </td> </tr> <tr> <td class="wiki_table_tdfirst">expired_token </td><td>21327 </td><td>token过期 </td> </tr> <tr> <td class="wiki_table_tdfirst">unsupported_grant_type </td><td>21328 </td><td>不支持的 GrantType </td> </tr> <tr> <td class="wiki_table_tdfirst">unsupported_response_type </td><td>21329 </td><td>不支持的 ResponseType </td> </tr> <tr> <td class="wiki_table_tdfirst">access_denied </td><td>21330 </td><td>用户或授权服务器拒绝授予数据访问权限 </td> </tr> <tr> <td class="wiki_table_tdfirst">temporarily_unavailable </td><td>21331 </td><td>服务暂时无法访问 </td> </tr> <tr> <td class="wiki_table_tdfirst">appkey permission denied </td><td>21337 </td><td>应用权限不足 </td> </tr> </table> ==OAuth2.0相关问题== 查看 [http://open.weibo.com/qa/index.php?qa=%E5%BA%94%E7%94%A8%E6%8E%88%E6%9D%83 OAuth2.0相关问题] {{#a:nobtns|noheading}} __NOTOC__
该页面使用的模板:
模板:Icon new2
(
查看源代码
)
模板:Img polaroid
(
查看源代码
)
返回到
授权机制说明
。
反馈
分享
顶部