# 获取AccessToken
# 说明
新浪云OpenApi支持通过authorization_code和refresh_token两种方式获取access token,authorization_code在申请完成后都会包含,refresh_token权限需要单独申请。
# 通过authorization_code方式获取access token
# 获取code
将您自己的页面重定向到Oauth2的授权页面,授权页面的格式如下:
https://api.sinaapp.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&state=1
请注意
请将以上CLIENT_ID换成真实的client id。
在授权的页面中输入 安全邮箱 和 安全密码,点击授权:
授权完成后页面将返回到系统设定的callback页面,并从GET的参数中携带code
参数。
关于This API can only be invoked by the creator.
如果出现这个提示,说明当前是非API的创建者授权使用,如果需要非创建者授权使用,权限需要单独申请。
返回的URL格式如下:
http://death.sinaapp.com/sae_callback.php?code=1ac849866e7ccca8ed69fc179223aba112e2a531&state=1
可以看到转跳的URL中包含了code
参数,从程序中拿到code后即可请求获取access_token。
# 通过code获取access token
# 请求地址
https://api.sinaapp.com/oauth2/access_token
# 请求方式
POST
# 请求参数
参数 | 是否必填 | 请求方式 | 说明 |
---|---|---|---|
code | 是 | POST | call back转跳的URL中的code字段 |
client_id | 是 | POST | 接口的Client_id,申请接口后可以获取 |
client_secret | 是 | POST | 接口的秘钥,申请接口后可以获取 |
grant_type | 是 | POST | 固定写authorization_code |
# 返回示例
调用成功时返回以下的JSON:
{
"access_token": "07954cabf0ee9bff284509dfb602478521dff450",
"expires_in": 604800,
"token_type": "Bearer",
"scope": null,
"refresh_token": "abfd84bf376d88da4efb6e13b853c339b08c7fd9"
}
其中:
- access_token:调用其他接口时必须携带的凭据
- expires_in:access token的过期时间,单位是秒,从当前时刻算起
- refresh_token:通过refresh token机制重新获取access token的token
# 通过refresh token获取access token
如果API的client_id拥有通过refresh token获取access token的权限,可以在access token快到期时调用接口获取新的access token,如果没有这个接口,需要重新走授权流程。
请注意
refresh token比access token的过期时间多一天,即在access token到期前获取到期后的一天内可以使用refresh token获取新的access token。
# 请求地址
https://api.sinaapp.com/oauth2/access_token
# 请求方式
POST
# 请求参数
参数 | 是否必填 | 请求方式 | 说明 |
---|---|---|---|
refresh_token | 是 | POST | 前一次授权获取到的refresh_token |
client_id | 是 | POST | 接口的Client_id,申请接口后可以获取 |
client_secret | 是 | POST | 接口的秘钥,申请接口后可以获取 |
grant_type | 是 | POST | 固定写refresh_token |
# 返回示例
# 成功
成功时返回新的access_token如下:
{
"access_token": "077ec980aab5bedf1853374474801c34e7b28230",
"expires_in": 604800,
"token_type": "Bearer",
"scope": null,
"refresh_token": "ecf8df3d8454b41fe3442332c4d73b8df1ecd371"
}
请注意
refresh token只能使用一次。
# 失败
失败时返回具体的错误,例如client_id没有refresh权限时报如下的错误:
{
"error": "unauthorized_client",
"error_description": "The grant type is unauthorized for this client_id"
}