微博开放平台
微连接
移动应用
网站接入
电商服务商
电商商家
数据服务
数据服务
合作伙伴
微博支付
轻应用
粉丝服务
文档
推广
我的应用
登录
weibo
开发文档
首页
平台政策与指引
概述
平台公约
新手指南
开发者协议
应用运营管理规范
微连接分级管理办法
应用审核产品指南
应用安全开发注意事项
平台应用设计规范
微服务接入指南
微博登录接入
用微博帐号登录
授权机制
移动应用接入
移动应用介绍
移动应用SSO授权
微博Deep Link
媒体接入平台
头条文章开放接口
视频上传开放接口
电商接入平台
电商服务商接入
电商商家端接入
电商平台能力接口
粉丝服务平台
粉丝服务平台
新手接入指南
微信开发者迁移指南
接收消息
发送消息
自定义菜单
用户管理
生成带参数的二维码
Fans Service Platform
商业接口
商业数据接入指南
订阅服务手册(中文版)
订阅服务手册(英文版)
商业接口-REST API
商业数据常见问题
网站接入
网站接入介绍
微博API
微博API
接口访问频次权限
资源下载
SDK
微博标识下载
常见问题
联系我们
工具箱
链入页面
链出更改
特殊页面
查看源代码
跳转到:
导航
,
搜索
根据下列原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
==OAuth2.0概述== 大部分API的访问如发表微博、获取私信,关注都需要用户身份,目前新浪微博开放平台用户身份鉴权有OAuth2.0和Basic Auth(仅用于应用所属开发者调试接口),新版接口也仅支持这两种方式。 OAuth2.0较1.0相比整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式。 [http://www.sinaimg.cn/blog/developer/wiki/oAuth2_01.gif/ OAuth2.0授权流程] ,Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。 开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth2.0。 '''注意事项:''' **1、OAuth2.0授权无需申请,任何应用都可以使用。如果开发者需要更长的授权有效期参考本文档授权有效期部分。 **2、如果你的应用是站外网页应用,你需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0,填写地址:http://open.weibo.com/apps/应用APPKEY/privilege/oauth 开发者需要根据各自的应用场景,选择适用的OAuth2.0授权流程: **1、网站或者站外Web应用,请参考:Web应用的验证授权(Authorization Code) **2、桌面和无线客户端应用,请参考:Web应用的验证授权(Authorization Code),无线客户端可以直接使用官方SDK,通过WebView方式使用授权页。 **3、微博站内应用,请参考 [[站内应用开发指南]]。 ==接口文档== <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_oauth2_token|OAuth2/get_oauth2_token]] {{Icon_new2}} </td><td>OAuth1.0的Access Token更换至OAuth2.0的Access Token </td></tr> </table> ==应用场景== ===Web应用的验证授权=== [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, 可以大大简化授权流程开发,降低开发成本。 参考:[[移动应用SSO授权]] ===站内应用的验证授权=== 参考:[[站内应用开发指南]] <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的值 其它接口参数正常传递即可。 ==授权有效期== 程序一定要具备足够的健壮性,调用接口时判断接口的返回值,如果用户的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> <th scope="col">合作</th> </tr> <tr> <td>授权有效期</td> <td>1天</td> <td>7天</td> <td>15天</td> <td>30天</td> <td>90天</td> </tr> </table> 注:只有未过文案审核的应用才处于测试级别。 <strong>access_token自动延续方案{{Icon_new2}}</strong> 如果用户在授权有效期内重新打开授权页授权(如果此时用户有微博登录状态,这个页面将一闪而过),那么新浪会为开发者自动延长access_token的生命周期,请开发者维护新授权后得access_token值。 <strong>如何计算某个用户的access_token过期时间?</strong> 开发者可以通过两种方式计算: *#用户授权时,oauth2/access_token接口返回的expires_in值就是access_token的生命周期。 *#从上述对应表中,找到应用所对应的授权有效期,过期时间 = 用户授权时间 + 授权有效期 <strong>如何查询当前应用得授权级别</strong> 你可以在http://open.weibo.com/apps/你的APPKEY/privilege/limit 上查询当前应用的授权级别。 <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/downloads 下载Android SDK]</td> <td>[https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth/downloads 下载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> </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相关问题]
该页面使用的模板:
模板:Icon new2
(
查看源代码
)
模板:Img polaroid
(
查看源代码
)
返回到
授权机制说明
。
反馈
分享
顶部