XAuth
(创建新页面为 '==关于xAuth== xAuth认证实际上是OAuth认证的简化版。 使用xAuth认证方式,您仍然需要了解[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|如何向新浪微…') |
|||
第1行: | 第1行: | ||
==关于xAuth== | ==关于xAuth== | ||
− | xAuth认证实际上是OAuth认证的简化版。 | + | xAuth认证实际上是OAuth认证的简化版。<br/> |
− | + | <br/> | |
使用xAuth认证方式,您仍然需要了解[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|如何向新浪微博发送签名的请求。]] | 使用xAuth认证方式,您仍然需要了解[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|如何向新浪微博发送签名的请求。]] | ||
− | + | <br/> | |
为了方便桌面应用和移动应用,特别是那些缺乏浏览器支持的应用,xAuth认证为这类应用提供了一种使用用户名和密码来获取OAuth的Access Token的方式。 | 为了方便桌面应用和移动应用,特别是那些缺乏浏览器支持的应用,xAuth认证为这类应用提供了一种使用用户名和密码来获取OAuth的Access Token的方式。 | ||
− | 采用xAuth认证的桌面应用和移动应用可以跳过oauth/request_token(获取Request Token)以及oauth/authorize(授权Request Token)两步,只要提供了username和password以后,即可直接通过oauth/access_token接口得到Access Token。 | + | 采用xAuth认证的桌面应用和移动应用可以跳过oauth/request_token(获取Request Token)以及oauth/authorize(授权Request Token)两步,只要提供了username和password以后,即可直接通过oauth/access_token接口得到Access Token。<br/> |
− | + | <br/> | |
− | xAuth只对授权的应用开放。如果您的应用是桌面客户端或者手机客户端,那么标准的OAuth Web流程对您来说就不合适了。您可以将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给api@t.sina.com.cn来申请xAuth的使用权。 | + | xAuth只对授权的应用开放。如果您的应用是桌面客户端或者手机客户端,那么标准的OAuth Web流程对您来说就不合适了。您可以将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给api@t.sina.com.cn来申请xAuth的使用权。<br/> |
− | + | <br/> | |
− | xAuth认证需要您采用基于HTTP头信息的OAuth认证方式,并以POST方式来访问经过SSL加密的oauth/access_token接口。 | + | xAuth认证需要您采用基于HTTP头信息的OAuth认证方式,并以POST方式来访问经过SSL加密的oauth/access_token接口。<br/> |
− | + | <br/> | |
− | ==使用xAuth== | + | ==使用xAuth==<br/> |
− | 要使用xAuth认证,需要经过以下步骤: | + | 要使用xAuth认证,需要经过以下步骤:<br/> |
− | + | <br/> | |
− | 1. 申请xAuth认证使用资格:将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给api@t.sina.com.cn来申请xAuth的使用权。如果您已经获得xAuth使用权,请直接看第2步。 | + | 1. 申请xAuth认证使用资格:将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给api@t.sina.com.cn来申请xAuth的使用权。如果您已经获得xAuth使用权,请直接看第2步。<br/> |
− | + | <br/> | |
− | 2. 获得xAuth的使用权后,为了能够生成OAuth签名,我们首先参考[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|如何向新浪微博发送签名的请求。]],生成OAuth的BaseString。注意,生成BaseString时需要传入如下几个参数: | + | 2. 获得xAuth的使用权后,为了能够生成OAuth签名,我们首先参考[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|如何向新浪微博发送签名的请求。]],生成OAuth的BaseString。注意,生成BaseString时需要传入如下几个参数:<br/> |
− | + | <br/> | |
* x_auth_username:用户名(即用户在新浪通行证中使用的邮箱。) | * x_auth_username:用户名(即用户在新浪通行证中使用的邮箱。) | ||
* x_auth_password:密码 | * x_auth_password:密码 | ||
第26行: | 第26行: | ||
* oauth_nonce:单次值,一个随机字符串,防止重复攻击。 | * oauth_nonce:单次值,一个随机字符串,防止重复攻击。 | ||
* oauth_version : OAuth协议版本。填写“1.0”。 | * oauth_version : OAuth协议版本。填写“1.0”。 | ||
− | + | <br/> | |
− | 生成的BaseString示例如下: | + | 生成的BaseString示例如下:<br/> |
− | + | <br/> | |
<pre> | <pre> | ||
POST&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Faccess_token&oauth_consumer_key%3D1852823608%26oauth_nonce%3D-794036333%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1291944694%26oauth_version%3D1.0%26source%3D1852823608%26x_auth_mode%3Dclient_auth%26x_auth_password%3D------%26x_auth_username%3D---------%2540sina.cn | POST&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Faccess_token&oauth_consumer_key%3D1852823608%26oauth_nonce%3D-794036333%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1291944694%26oauth_version%3D1.0%26source%3D1852823608%26x_auth_mode%3Dclient_auth%26x_auth_password%3D------%26x_auth_username%3D---------%2540sina.cn | ||
</pre> | </pre> | ||
− | + | <br/> | |
− | 3. 用刚刚生成的BaseString,经过HMAC-SHA1算法生成oauth_signature,示例如下: | + | 3. 用刚刚生成的BaseString,经过HMAC-SHA1算法生成oauth_signature,示例如下: <br/> |
<pre> | <pre> | ||
iviIHhwXWmFLliZbeDoSyQ+XC1o= | iviIHhwXWmFLliZbeDoSyQ+XC1o= | ||
</pre> | </pre> | ||
− | + | <br/> | |
− | 4. 将以下参数封装成HTTP请求头,并向oauth/access_token接口提交POST请求: | + | 4. 将以下参数封装成HTTP请求头,并向oauth/access_token接口提交POST请求:<br/> |
− | + | <br/> | |
* x_auth_username, | * x_auth_username, | ||
* x_auth_password, | * x_auth_password, | ||
第50行: | 第50行: | ||
* oauth_version | * oauth_version | ||
* source | * source | ||
− | + | <br/> | |
<pre> | <pre> | ||
Authorization: OAuth oauth_consumer_key="1852823608",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1291944694",oauth_nonce="-794036333",oauth_version="1.0",oauth_signature="iviIHhwXWmFLliZbeDoSyQ%2BXC1o%3D",source="1852823608",x_auth_mode="client_auth",x_auth_password="------",x_auth_username="---------@sina.cn" | Authorization: OAuth oauth_consumer_key="1852823608",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1291944694",oauth_nonce="-794036333",oauth_version="1.0",oauth_signature="iviIHhwXWmFLliZbeDoSyQ%2BXC1o%3D",source="1852823608",x_auth_mode="client_auth",x_auth_password="------",x_auth_username="---------@sina.cn" | ||
</pre> | </pre> | ||
− | + | <br/> | |
− | 5. 得到的返回结果示例如下: | + | 5. 得到的返回结果示例如下:<br/> |
<pre> | <pre> | ||
oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721 | oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721 | ||
</pre> | </pre> | ||
− | + | <br/> | |
− | 将返回结果按"&" | + | 将返回结果按"&"拆开,oauth_token的值即为access_token。<br/> |
2010年12月10日 (五) 11:33的版本
关于xAuth
xAuth认证实际上是OAuth认证的简化版。
使用xAuth认证方式,您仍然需要了解如何向新浪微博发送签名的请求。
为了方便桌面应用和移动应用,特别是那些缺乏浏览器支持的应用,xAuth认证为这类应用提供了一种使用用户名和密码来获取OAuth的Access Token的方式。
采用xAuth认证的桌面应用和移动应用可以跳过oauth/request_token(获取Request Token)以及oauth/authorize(授权Request Token)两步,只要提供了username和password以后,即可直接通过oauth/access_token接口得到Access Token。
xAuth只对授权的应用开放。如果您的应用是桌面客户端或者手机客户端,那么标准的OAuth Web流程对您来说就不合适了。您可以将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给api@t.sina.com.cn来申请xAuth的使用权。
xAuth认证需要您采用基于HTTP头信息的OAuth认证方式,并以POST方式来访问经过SSL加密的oauth/access_token接口。
==使用xAuth==
要使用xAuth认证,需要经过以下步骤:
1. 申请xAuth认证使用资格:将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给api@t.sina.com.cn来申请xAuth的使用权。如果您已经获得xAuth使用权,请直接看第2步。
2. 获得xAuth的使用权后,为了能够生成OAuth签名,我们首先参考如何向新浪微博发送签名的请求。,生成OAuth的BaseString。注意,生成BaseString时需要传入如下几个参数:
* x_auth_username:用户名(即用户在新浪通行证中使用的邮箱。) * x_auth_password:密码 * x_auth_mode:标识字段,这里必须是"client_auth"。 * oauth_consumer_key: 创建应用时生成的APP KEY。 * oauth_signature_method: 签名方法,建议使用“HMAC-SHA1”。 * oauth_timestamp:时间戳。生成BaseString时的时间戳。 * oauth_nonce:单次值,一个随机字符串,防止重复攻击。 * oauth_version : OAuth协议版本。填写“1.0”。
生成的BaseString示例如下:
POST&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Faccess_token&oauth_consumer_key%3D1852823608%26oauth_nonce%3D-794036333%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1291944694%26oauth_version%3D1.0%26source%3D1852823608%26x_auth_mode%3Dclient_auth%26x_auth_password%3D------%26x_auth_username%3D---------%2540sina.cn
3. 用刚刚生成的BaseString,经过HMAC-SHA1算法生成oauth_signature,示例如下:
iviIHhwXWmFLliZbeDoSyQ+XC1o=
4. 将以下参数封装成HTTP请求头,并向oauth/access_token接口提交POST请求:
- x_auth_username,
- x_auth_password,
- x_auth_mode,
- oauth_consumer_key,
- oauth_signature_method,
- oauth_signature,
- oauth_timestamp,
- oauth_nonce,
- oauth_version
- source
Authorization: OAuth oauth_consumer_key="1852823608",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1291944694",oauth_nonce="-794036333",oauth_version="1.0",oauth_signature="iviIHhwXWmFLliZbeDoSyQ%2BXC1o%3D",source="1852823608",x_auth_mode="client_auth",x_auth_password="------",x_auth_username="---------@sina.cn"
5. 得到的返回结果示例如下:
oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721
将返回结果按"&"拆开,oauth_token的值即为access_token。