抖音开放平台Logo
开发者文档
控制台
  • 移动应用
  • open SDK 概述
  • open SDK 下载
  • open SDK 接入
  • 抖音分享
  • 抖音投稿发布
  • 抖音名片
  • 抖音登录和授权
  • 登录与授权
  • 获取授权令牌
  • 授权页面配置备注
  • iOS
  • Android
  • 鸿蒙
  • 鸿蒙授权
  • 常见问题
  • 网站应用
  • 适用场景

    本能力适用于通过使用抖音短视频授权,获取使用抖音短视频登录第三方应用的权限。

    背景信息

    移动应用使用抖音短视频授权是基于 OAuth2.0 协议标准。抖音短视频授权采用 OAuth2.0 的授权码(authorization code)方式,首先需要获取一个临时票据,再用该临时票据获取令牌(access_token),然后通过该令牌获取用户信息。详情请参见总体授权说明

    准备工作

    在使用授权登录之前,您需要完成接入指南中的申请、配置过程。具体操作,请参见鸿蒙接入

    操作步骤

    开发者接入抖音 OpenSDK,设置授权域(Scope),调用下面方法后,将会拉起抖音授权界面。用户在选择开放给第三方的信息并确认之后,抖音服务器会返回给第三方应用授权临时票据(code)。

    第一步:构造授权请求

    let authRequest: OpenAuthRequest = new OpenAuthRequest(); authRequest.scope = "user_info"; // 用户授权时必选权限 authRequest.state = "AuthUseCase"; // 用于保持请求和回调的状态,授权请求后原样带回给第三方。 authRequest.callerLocalEntry = "EntryAbility" //回调的UIAbility名称,需要在modulue.json5中申明 authRequest.redirectUri = "https://xxx/xxx" // 填写配置好的applink

    第二步:发起授权

    通过 authorize 方法发起授权后,可以通过回调获取到结果。其中 authCode 为临时票据 code,用来换取 access_token,grantedPermissions 为用户授权后取得的授权域。
    let listener: DouYinOpenListener = { onSuccess: (response: OpenAuthResponse, authCode: string, grantedPermissions: string) => { OpenSDKLog.i(TAG, `Auth success. authCode=${authCode} grantedPermissions=${grantedPermissions}`) }, onError: (response: OpenAuthResponse, errCode: number, errMsg: string) => { OpenSDKLog.i(TAG, `Auth error. errCode=${errCode} errMsg=${errMsg}`) } } douYinOpenSDK.createDouYinOpenApi()?.authorize(this.context, authRequest, listener)

    第三步:获取 access_token

    成功获取到 auth code 之后,您需要再调用接口来获取 access_token,详情请参见获取授权令牌
    该接口及后续接口请求建议放在服务端调用,因为:
    client_secret是应用密钥,泄漏后可能会发生用户隐私数据泄漏的风险,存储在客户端并不安全,容易被窃取。
    access_token为用户授权第三方接口调用的凭证,存储在客户端,可能会被窃取,泄漏后可能会发生用户隐私数据泄漏的风险。
    refresh_token仅用于刷新access_token,泄漏后相当于access_token泄漏,泄漏后可能会发生用户隐私数据泄漏的风险。 建议将client_secretaccess_token放到服务端来进行存储和使用。

    参数说明

    请求参数说明

    参数
    描述
    是否必传
    scope
    授权域是指您的应用使用抖音授权之后,可以获得抖音用户的哪些信息,目前开放了user_info 授权域,表示可以获得请求用户头像、昵称等相关信息的权限,如果有多种必选权限,权限之间请使用逗号隔开, "xxx,xxx"。
    state
    用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意 String。
    optionalScope0
    用户可选授权域,默认不勾选。
    optionalScope1
    用户可选授权域,默认勾选。
    verifyObject
    实名scope项
    callerLocalEntry
    回调的UIAbility名称,需要在module.json中声明
    callerBundleName
    当前应用的bundleName
    redirectUri
    回调Uri路径,传入应用的applink链接
    commentId

    返回参数说明

    返回值
    说明
    errorCode
    •OK = 0:授权成功
    •ERRORUNKNOW = -1:未知错误
    •ERRORCANCEL = -2:用户手动取消
    更多错误码请参考 CommonConstants.java。
    authCode
    临时票据 code,用来换取 access_token。
    state
    第三方程序发送时用于表示其请求的唯一性标志,由第三方程序调 openApi.authorize(request) 时传入,由抖音终端回传。
    grantedPermissions
    第三方通过用户授权取得的授权域。

    错误码

    错误码
    描述
    OK = 0
    成功
    ERROR = 7
    访问频繁,命中风控
    ERROR_UNKNOW = -1
    未知错误
    ERROR_CANCEL = -2
    用户手动取消
    ERROR = -3
    网络异常
    ERRORNETWORKNO_CONNECTION = -12
    网络未连接
    ERRORNETWORKCONNECT_TIMEOUT = -13
    网络连接超时
    ERRORNETWORKTIMEOUT = -14
    网络超时
    ERRORNETWORKIO = -15
    网络io错误
    ERRORNETWORKUNKNOWNHOSTERROR = -16
    网络未知host错误
    ERRORNETWORKSSL = -21
    网络ssl错误
    ERROR_SYSTEM = 10001
    系统异常
    ERROR_PARAM = 10002
    参数错误
    ERROR_CONFIG = 10003
    非法的配置(partner_client)
    ERROR_SCOPE = 10004
    授权域配置错误
    ERRORNPARAMS = 10005
    缺少参数
    ERRORREDIRECTURL = 10006
    非法重定向url
    ERRORCODEEXPIRED = 10007
    Authorization code 失效
    ERROR_TOKEN = 10008
    Access_Token 无效
    ERROR_TICKET = 10009
    非法参数
    ERRORREFRESHTOKEN = 10010
    refresh token 过期
    10011
    应用信息有误,配置的包名/applink和实际的不符
    10012
    应用审核中,无法使用,联系运营同学
    10013
    client_key或者client_secret错误
    10014
    客户端携带的client_key不一致
    10015
    应用类型错误,检查是否混用APP/WEB 类型的client_key
    10017
    授权鉴权失败,需要补全开发信息。