为您创建的应用授权

微博广告开放平台的认证是基于 RFC6749实现的. 目前只实现Authorization Code Grant,获取访问令牌(token)的工作流如下:


image.png


有几点特殊事项需要客户方技术人员注意:

1、同一个广告主账号支持反复授权,再次授权后会更新code(code授权码有效期10分钟,且只可使用一次);

2、授权成功支持跳转回调地址,code会以此方式回传,接收方式为get请求,并且您可以通过state原样获取你的参数,这样可以处理您自己的逻辑;

3、通过code可以生成新的access_token和refresh_token,access_token的时效是一小时、refresh_token是7天90天不同两种级别,默认有效期90天,refresh_token可以刷新access_token,刷新后老access_token将不可使用。


第一步:获取Authorization Code


请求地址:

GET https://api.biz.weibo.com/oauth/authorize


请求参数:

参数描述
client_id创建应用时分配的appid
redirect_uri创建应用时候填写的跳转url
response_type此处固定为 code
scopeads_read 只读, ads_management 读写
state用来跟踪授权状态的字符串(防跨站攻击)


拼贴授权code示例: 

https://api.biz.weibo.com/oauth/authorize?client_id=APP_ID&redirect_uri={您的回调地址}&response_type=code&state=xyz&scope=ads_read


此时粘贴进浏览器中会出现授权页面,如下图,请选择相关权限后点击【授权按钮】:

请注意:此时网页上登陆的账号才是你获取的token对应的账号,请再三检查此页面,当前登陆的是否为想要获取token的账号


此时如果你不使用投放相关API,请勾选只读+查看权限,不要勾选投放,因为那样会进入沙箱报错;

如果你想使用投放功能相关API请勾选3个,并将clientid告知你的销售,让他帮你开通投放功能并且不进入沙箱;


授予权限成功后, 请求会被重定向到之前传的redirect_url, 连同 code 参数和state参数 {您的回调地址}?code=8350c34e53e20ad4ea2457530bb07561559600131f1c495e6b3567810bb3&state=xyz
此时你的服务器端能拿到code,进而执行第二步,code 10分钟后会过时,每个code换取access_token后程序也会将其设置过期,每个code只能换取一次access_token。



第二步:创建access_token令牌


请求地址:

GET https://api.biz.weibo.com/oauth/token


请求参数:

参数描述
client_id分配的appid
grant_type此处固定为authorization_code
redirect_uri创建应用时候填写的跳转url
code请求认证返回的code值


例子:https://api.biz.weibo.com/oauth/tokenclient_id=APP_ID&grant_type=authorization_code& redirect_uri=http%3A%2F%2Ftestclient1.ads.uve.pw%2Findex.php&code=bd699ae9a8e1ead13fd47b9b

如果成功会返回

{    
    "access_token": "0879b561ce852525f17a58f3fc6b136446c86a3ae9bb179d323fbd269678be704e82b54dbd1502cf192a2b7c5f34f98327c1b2341584872de1c7d681ffcd1ad2",    
    "expires_in": 3599,    
    "refresh_token": "6b2b27d43c704170cb6495a0c1b19452704f6aafaa8c228ddbfb9ea3a231b5ad034fb0cfc6e8fb3fee4a8e0ba1e4ace0bfab2ed8464d125ebf37ecc20441ec83",    
    "refresh_expires_in": 604800,
    "token_type": "Bearer"
   
}


其中access_token过期时间为1个小时,access_token过期后你需要让用户重新授权或者用下面的通过refresh token换取access token的方式获取新的access_token。refresh_token的过期时间默认90天,具体配置在我们的后台控制。

注意:refresh_token目前没有续期机制,到期【必须】需要客户重新授权来获得新的refresh_token。 原因是我们的广告投放的特殊性,定期重新授权也是出于对您利益的考虑。微博目前无放开限制的考虑,其他竞品策略也暂不参考。

举例请求API接口:

当你获取到了access token后, 就可以通过token调用去任意API接口了,可以通过Authorization 头部传递token。

下面是一个获取用户广告账号信息的请求例子:


curl -XGET \     
   -H "Authorization: Bearer {ACCESS_TOKEN}" \    
   -H "Accept: application/json,application/text+gw2.0" \    
   "https://api.biz.weibo.com/account"



第三步:刷新access_token令牌

当使用一小时后,您的access会过期无效,使用refresh_token可以刷新access_token,用来替换即将到期的access_token,刷新后老access_token将不可使用。

注意 使用refresh token获取请不要使用多线程或者避免并发操作,否则会有几率出现问题。

请求地址:

GET https://api.biz.weibo.com/oauth/token


请求参数:

参数描述
client_id分配的appid
grant_type此处固定为refresh_token
refresh_token上面返回的refresh_token值


例子:https://api.biz.weibo.com/oauth/tokenclient_id=APP_ID&grant_type=refresh_token&refresh_token= 7141183a7c563e773ab2ae316c262c1b9bd4024c2821dafdfa6eb53b8127b7fa3abe0abe2926e91ed970a6cfcfe74163460fed79013b

返回:

{     
       "access_token": "d21ea15dc4fc595328b9776044d230c6b0d55a028be6778e43791e5000670de1991aa75baef8e8c8d06aa8a179990c6dee1615f5cf631f453069ba42f5daa17b",
       "expires_in": 3599,    
       "token_type": "Bearer"
}



频控限制

我们针对每一个开发者应用都设置了四个不同等级的调用频次限制,包括了Token天数、分钟频次、小时频次、天数频次:


类别描述
Token天数refresh token租期,例如:90天级别,每过90天需要重新进行登录授权流程
分钟频次针对client id进行每分钟访问频次限制,每分钟过后刷新,重新计数
小时频次针对client id进行每小时访问频次限制,每小时过后刷新,重新计数
天数频次针对client id进行每天访问频次限制,每天过后刷新,重新计数



频次通用规则:

规则Token天数分钟频次小时频次天数频次
LEVEL_2901008,000150,000
LEVEL_390100030,000200,000
LEVEL_49010,000300,0002,000,000
LEVEL_9710,000500,0001,000,000
LEVEL_171006000100,000


提示:

目前只读账号默认会自动接入【LEVEL_3级别】的频次控制;如果需要接入其他级别控制,请联系对应渠道销售人员。


联系我们

请输入图片验证码

确认

或请直接拨打

400-098-0980

周一至周日 9:00-18:00(仅收市话费)

X

联系我们

请输入图片验证码

确认

或请直接拨打400-098-0980

周一至周日 9:00-18:00(仅收市话费)