授权机制说明

跳转到: 导航, 搜索
(OAuth验证常见问题)
第5行: 第5行:
  
 
===OAuth===
 
===OAuth===
OAuth是一种国际通用的授权方式,它的特点是不需要用户在第三方应用输入用户名及密码。OAuth的技术说明可参看官方网站 http://oauth.net (英文)。
+
关于OAuth的详细文档,参见此篇文章:[[OAuth]]
 
+
微博系统中,OAuth的Access token不会过期,只有用户手工撤销授权或新浪收回您的app访问权限access token才会失效。
+
 
+
目前OAuth只支持授权读写访问,授权的应用可以获取用户数据及发表微博。目前暂时不支持只读权限授权。
+
 
+
认证流程及访问资源流程:
+
 
+
# 获取未授权的 Request Token
+
# 用户授权该Request Token
+
# 通过authorize得到用户授权后的 Access Token
+
# 使用Access Token访问或修改受保护资源
+
 
+
====桌面应用的OAuth使用方式====
+
OAuth协议规范由于需要输入密码之后跳转到callback URL, 因此并不十分适合桌面软件(非Web软件)。我们采用输入PIN的方式来激活纯桌面应用。具体流程为:
+
 
+
# 第三方应用软件向API调用获得request token
+
# 用户打开网页跳转到新浪微博网站输入用户名及密码。
+
# 验证通过之后,用户会看到包含7个数字的PIN码。
+
# 新浪验证通过网页界面提示用户需要到应用软件输入PIN码。
+
# 第三方应用软件提示用户输入PIN码。
+
# 第三方应用软件将PIN作为oauth/access_token接口的oauth_verifier parameter参数传入,获取access_token.
+
# API接口返回后续请求所需access_token
+
  
 
===HTTP普通验证(Basic Authentication)方式===
 
===HTTP普通验证(Basic Authentication)方式===
第35行: 第13行:
  
 
Basic Auth编程也可以参看这篇文章 http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html
 
Basic Auth编程也可以参看这篇文章 http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html
 
=== OAuth验证常见问题  ===
 
* 在第一步获取Request Token时,需要使用Consumer Key和API Key Secret进行签名 的Consumer Key Secret。
 
* 在第二步换取Access Token时,需要使用Consumer Key,API Key Secret、Request Token和Request Token Secret进行签名。而Request Token和Request Token Secret对应签名中的Token和Token Secret
 
* 而在第三步访问受限资源时,需要使用Consumer Key,API Key Secret、Access Token和Access Token Secret进行签名。
 
* 请注意区分三次签名中用到的Key、Token和Secret,这是签名不匹配的一个常见原因。
 
* 对于上传图片的接口,需要使用MultPart,认证时图片不加入baseString做签名。
 
* 对中文字串做URLEncode时,注意确定生成的串中的字母必须为大写。
 
* 授权通过后获取用户基本信息,可调用接口[[Account/verify_credentials]]。
 
* 线上调用接口认证不通过,请检查调用api的机器 和 api.t.sina.com.cn的机器之间的时间同步问题,需要保持在5分钟之内。
 
* Access Token过期时间:永久不过期。
 
* 如何获取用户ID,在oauth认证最后一步接口会返回当前认证用户的ID,参数为:user_id。
 
 
===资源链接===
 
# OAUTH协议简介 http://blog.csdn.net/hereweare2009/archive/2009/03/08/3968582.aspx
 
# Beginner’s Guide to OAuth (英文) http://hueniverse.com/oauth/
 
# [OAuth官网]|[http://oauth.net] (英文网站)
 
# [Google-OAuth项目提供各种语言的OAuth库]|[http://code.google.com/p/oauth/]
 

2010年10月28日 (四) 15:04的版本

授权机制说明

大部分REST API的访问如发表微博,获取私信都需要用户身份验证。目前用户身份验证有OAuth验证和HTTP普通验证两种方式。
建议第三方开发者和用户都选择OAuth认证方式,OAuth方式无需用户在第三方软件输入用户名/密码,用户验证时是跳到新浪网站进行身份验证。

OAuth

关于OAuth的详细文档,参见此篇文章:OAuth

HTTP普通验证(Basic Authentication)方式

Basic Authentication是一种通过HTTP头传递用户身份的授权方式。在非HTTPS方式下使用存在密码被窃听风险。 采用普通鉴权(Basic Authentication)时app_key(consumer key)通过请求参数直接传递,参数名为 source=consumer key,如

curl -u user:password -d "source=10001&status=api test" http://api.t.sina.com.cn/update.xml

Basic Auth编程也可以参看这篇文章 http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html