# 获取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"
}