致大神们:微博授权问题

lcniuren33 发布于 2012/09/08 00:10
阅读 10K+
收藏 0

最近想写一个新浪微博的应用,首先要获取用户的授权,可是现在连怎么发送授权信息,怎么接收授权了的access_token都不知道

用的是javascipt,求大神给个详细的代码。。。

1.用XMLHTTPRequest

2.用ajax

3.jquery

这是新浪的授权机制。。。求每个步骤的详细代码。。。先谢谢了!!!!

 

 

Web应用的验证授权(Authorization Code)

基本流程


1. 引导需要授权的用户到如下地址:

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI


2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE


3. 换取Access Token

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

(其中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

客户端的验证授权(Resource Owner Password Credentials)

基本流程


1.调用

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=USER_NAME&password=PASSWORD

返回值 { "access_token":"SlAV32hkKG", "expires_in":3600 }


2. 使用获得的OAuth2.0 Access Token调用API


注:客户端的验证授权需要申请

站内应用的验证授权

参考:站内应用开发指南

使用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的值


其它接口参数正常传递即可。

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错误响应中的错误码定义如下表所示:

错误码(error) 错误编号(error_code) 错误描述(error_description)
redirect_uri_mismatch 21322 重定向地址不匹配
invalid_request 21323 请求不合法
invalid_client 21324 client_id或client_secret参数无效
invalid_grant 21325 提供的Access Grant是无效的、过期的或已撤销的
unauthorized_client 21326 客户端没有权限
expired_token 21327 token过期
unsupported_grant_type 21328 不支持的 GrantType
unsupported_response_type 21329 不支持的 ResponseType
access_denied 21330 用户或授权服务器拒绝授予数据访问权限
temporarily_unavailable 21331 服务暂时无法访问

加载中
0
子达如何
子达如何

(其中client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET可以使用basic方式加入header中)

。。

终于明白之前为啥有大侠说OAUTH2.0安全性很差了,原来竟然可以用basic方式传递用户的密码(所谓basic就是明文),随便就可以被截获。

jerry2012
jerry2012
怎么用POST提交获取access_token啊
0
AlanShi
AlanShi
先将oauth2官方的那几页文档看清楚或者打印下来
0
leo108
leo108
微博有提供JS的SDK好么,自己下载下来看
0
lcniuren33
lcniuren33
看了,表示新浪的看不懂。。。
0
VincentTone
VincentTone
先用给定的链接获取token,要注意callback url,然后按步骤获取授权就可以了。
jerry2012
jerry2012
你问你是怎么获取的access_token
返回顶部
顶部