抖音帐号OAuth 2.0授权
网站应用抖音登录是基于OAuth2.0协议标准构建的授权登录系统,目前提供扫码登录和账号密码授权登录两种方式。
准备工作
在使用抖音OAuth2.0授权接入之前,需要注册一套开发者配置,其中包括ClientKey以及ClientSecret,即可开始接入流程。
授权流程说明
抖音OAuth2.0授权登录让用户安全登陆接入的第三方应用或网站,在抖音用户授权登录已接入抖音OAuth2.0的第三方应用或网站后,第三方可以获取到用户的接口调用凭证(access_token),通过该凭证可以实现获取抖音用户基本开放信息和其他已授权的相关信息等。
抖音OAuth2.0授权登录目前支持授权码模式,该模式在用户授权之后会返回一个授权码(code)给第三方应用,该授权码只能使用一次,第三方可通过授权码换取调用凭证。
调用流程包括:
第三方发起抖音授权登录请求,抖音用户允许授权第三方应用后(扫码确认或账号密码授权登录),确认通过后,会重定向到第三方网站(回调接口)。并且附带授权临时票据(code)
第三方通过code参数,以及ClientKey和ClientSecret等参数,通过API换取access_token
通过access_token进行接口调用,获取用户基本信息及其他操作等。
注意
client_secret是应用密钥,泄漏后可能会发生用户隐私数据泄漏的风险,存储在客户端并不安全,容易被窃取。
access_token为用户授权第三方接口调用的凭证,存储在客户端,可能会被窃取,风险同上。
refresh_token仅用于刷新access_token,泄漏后相当于access_token泄漏,风险同上。 建议将client_secret和access_token放到服务端来进行存储和使用。
刷新用户授权的access_token或续期
当access_token过期(过期时间15天)后,可以通过该接口使用refresh_token(过期时间30天)进行刷新:
1. 若access_token已过期,调用接口会报错(error_code=10008或2190008),refresh_token后会获取一个新的access_token以及新的超时时间。2. 若access_token未过期,refresh_token不会改变原来的access_token,但超时时间会更新,相当于续期。3. 若refresh_token过期,获取access_token会报错(error_code=10010),此时需要重新走用户授权流程。
刷新access_token或续期不会改变refresh_token的有效期。
刷新refresh_token
前提: client_key需要具备renew_refresh_token这个权限
注意
接口说明: 可以通过旧的refresh_token获取新的refresh_token,调用后旧refresh_token会失效,新refresh_token有30天有效期。最多只能获取5次新的refresh_token,5次过后需要用户重新授权。
生成client_access_token
client_access_token用于不需要用户授权就可以调用的接口,如生成share-id。
client_access_token的有效时间为2个小时,重复获取token后会使上次的token失效(但有5分钟的缓冲时间)。
注意!!!
不要在任何情况下将client access token下发给客户端。原因:
- client_access_token: 操作的是APP的数据,如设置APP需要监听的事件。
- user_access_token:操作的是用户的数据
所有的请求都应该收敛在服务端,第三方服务端与平台交互获取数据后,将结果下发给客户端。
静默授权
可以在用户无感知的情况下,获取用户在当前应用的open_id。
重要!这个接口需要在抖音端内可以打开的h5页面调用才有效。请求的域名跟其他接口也不同,是https://aweme.snssdk.com/。
如果ClientKey具备login_id这个scope,请求成功后,会重定向到redirect_uri,并且带上code。
code则跟用户授权换取的一样,用来调用https://open.douyin.com/oauth/access_token/ 换取用户open_id。
解授权通知
用户可在抖音APP-设置-帐号与安全-授权管理中解除对应用的授权,如需及时获知用户解除授权通知,请接入解除授权事件通知,具体调用方式参考Webhooks-事件。