身份认证(authentication)

说明

现在除了public_timeline以外的接口都需要身份认证才能访问资源,暂未对开发者做开发者key限制。每个请求都需要验证通过才能返回结果,否则返回401.

认证方式

现在的API采用了两种认证方式,BASIC和OAUTH

BASIC

BASIC Authentication是基本的HTTP认证方式,它所描述的认证是在发送http request时,将认证信息写在Http headers中,从而进行验证的。

BASIC 认证方式在header中的格式是:Authorization=Basic Base64_encode(username:password). 更多请访问关于basic认证的各种语言的实现

如果你有cURL工具,你可以通过curl –u username:password http://api.t.sohu.com/statuses/friends_timeline.xml 来访问我们的api。

OAuth

为了更好的保护搜狐微博用户,建议第三方采用oauth的认证方式,这种方式不会暴露用户的用户名密码,是一种十分安全的认证方式。

OAUTH的各种资源
OAUTH的官方网站
OAUTH的google开源资源http://code.google.com/p/oauth/
OAUTH的基本认证流程。http://blog.csdn.net/hereweare2009/archive/2009/03/08/3968582.aspx
Beginner’s Guide to OAuth。http://hueniverse.com/oauth/
OAUTH认证原理分析。http://kejibo.com/oauth/
搜狐微博API的OAUTH基本流程
  1. 第三方通过consumer_key换取request_token
  2. 用户授权request_token并返回verifier_code
  3. 第三方用授权的request_token换取access_token
  4. 第三方用access_token访问受限资源。
注意事项
  1. 签名方法最好使用HMAC-SHA1
  2. 版本选择1.0
  3. POST请求时,除了图片参数以外的参数都需要参与签名,请注意这个问题,否则很容易签名被拒绝
  4. 注意header中Authentication的值的格式是:Authorization:OAuth oauth_consumer_key="....
  5. 另外,也可以将OAuth参数放在url中传递,例如:http://api.t.sohu.com/statuses/home_timeline.json?oauth_consumer_key=...
  6. 请注意注意header中Authentication的值不需要带realm,如果带有realm可能会认证失败。这个问题将会在后期fix。
  7. 请注意请求header中的Accept值,如果返回HTTP_STATUS 406说明这个值没有传或传递的值不对。
  8. 注意:在POST请求时,如果status中包含空格,而且在UrlEncode之后,空格被转换为+,此时需要替换+为%20,否则签名将被拒绝。

XAuth

为了更好的为手机客户端和桌面客户端提供OAuth认证服务,正式推出了XAuth认证服务。这是一个简化版的OAuth认证方式,本质上还是基于OAuth认证。另外,xauth权限需要另作申请,没有开通xauth权限的key将会返回403,forbidden