特征
本文档旨在讲解:授权登录通过使用抖音短视频授权,您可以获得使用抖音短视频登录第三方应用的权限,通过用户同意授权,您的App可以访问用户相关个人信息,包括用户昵称、头像等信息。
适用场景
该能力适用于通过抖音短视频授权获取第三方应用的登录权限。
注:此授权SDK不适用于抖音快车版,请下载抖音主版本才能完成授权功能。
一般授权声明
抖音短视频移动应用授权基于.0协议标准,抖音短视频授权采用.0授权code(code)方式,首先需要获取临时,然后使用临时获取(),再通过获取用户信息,详情见整体授权说明。
注意:授权功能已适配至11,如在11上遇到授权功能异常,请升级SDK版本至0.1.4.0及以上版本,请参考配置包可见性,确保SDK能正确获取抖音的应用签名。
准备
使用授权访问前,您需要完成访问指南中的申请及配置流程,配置流程详情请参见访问指南。
我们提供授权书供参考,如果您无法直接运行完整流程,请参考以下说明进行修改,点击下载:授权书
操作步骤 步骤1:初始化
在()中初始化
String clientkey = "xxxxxx"; // 需要到开发者网站申请 DouYinOpenApiFactory.init(new DouYinOpenConfig(clientkey));
第 2 步:注册信息
登记
<uses-permission android:name="android.permission.INTERNET" /> <activity android:name=".douyinapi.DouYinEntryActivity" android:launchMode="singleTask" android:taskAffinity="你的包名" android:exported="true"> </activity>
步骤3:设置参数
开发者接入,设置授权域(),调用如下方法后会打开授权接口,用户选择需要开放给第三方的信息并确认后,服务器会返回一个临时的授权(code)给第三方应用。
DouYinOpenApi douyinOpenApi = DouYinOpenApiFactory.create(this); Authorization.Request request = new Authorization.Request(); request.scope = "user_info"; // 用户授权时必选权限 //request.state = "ww"; // 用于保持请求和回调的状态,授权请求后原样带回给第三方。 //request.callerLocalEntry = "com.xxx.xxx...activity"; return douyinOpenApi.authorize(request); // 优先使用抖音app进行授权,如果抖音app因版本或者其他原因无法授权,则使用web页授权
参数描述是否必填?
授权域是指您的应用使用抖音授权后,可以获取抖音用户的哪些信息。目前授权域是开放的,也就是说您可以获取请求用户头像、昵称等相关信息的权限。若需要的权限有多个,请使用逗号分隔,"xxx,xxx"
是的
用于维护请求和回调的状态,将授权请求完整地返回给第三方。
不
第三方指定自定义回调类,自定义时请注意实现此方法
不
用户可选择的授权域,默认未选中
不
用户可选择的授权域,默认勾选
不
结果显示:
执行代码后会显示的授权登录页面(若未安装则会显示网页授权页面)。
结果显示:
步骤4:接受返回的信息
在应用名下(或者你自己的)创建一个包,初始化,实现接口,并在方法中获取授权码结果
public class DouYinEntryActivity extends Activity implements IApiEventHandler { DouYinOpenApi douYinOpenApi; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); douYinOpenApi = DouYinOpenApiFactory.create(this); douYinOpenApi.handleIntent(getIntent(), this); } @Override public void onReq(BaseReq req) { } @Override public void onResp(BaseResp resp) { // 授权成功可以获得authCode if (resp.getType() == CommonConstants.ModeType.SEND_AUTH_RESPONSE) { Authorization.Response response = (Authorization.Response) resp; if (resp.isSuccess()) { Toast.makeText(this, "授权成功,获得权限:" + response.grantedPermissions, Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "授权失败" + response.grantedPermissions, Toast.LENGTH_LONG).show(); } finish(); } } @Override public void onErrorIntent(@Nullable Intent intent) { // 错误数据 Toast.makeText(this, "intent出错啦", Toast.LENGTH_LONG).show(); finish(); }
注意:如果您的应用代码经过混淆,获取授权后将无法获取授权结果回调,请将您收到的回调(或您自定义的回调)加入非混淆列表。
第五步:获取授权码结果说明
返回值及相关说明
返回值说明
OK = 0 授权成功,= -1 未知错误,= -2 用户手动取消更多错误码请参考.java
临时票号,用于兑换
用于标识第三方程序发送的请求的唯一标识,在第三方程序调用.()时传入,由抖音终端返回。
第三方通过用户授权获取的授权域
第 6 步。获取
(此接口及后续接口请求建议在服务端调用,原因见注释)
成功获取auth code后,需要调用接口获取,具体请参见:获取授权接入说明
注意
它是应用密钥,一旦泄露,可能存在用户隐私数据泄露的风险,存放在客户端不安全,容易被窃取。
用户授权第三方接口调用的凭证保存在客户端,可能被窃取,风险同上。
仅用于刷新,如果泄露则相当于泄漏,风险同上,建议放在服务器保存使用。
SDK 演示下载
授权仅供参考,若无法直接运行完整流程,请参考以上说明进行修改,点击下载授权
SDK 0.0.1.X到新版SDK 0.1.1.0以上版本其他主要变化 1.类库引入方法
dependencies { implementation 'com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.1.0' implementation 'com.bytedance.ies.ugc.aweme:opensdk-common:0.1.1.0' }

新版SDK需要导入两个AAR,这是和旧版SDK最大的区别
2.将主类名由原来的名称改为现在的名称
r
3.授权包名的类名变更
在引入这些类的时候只要改成正确的包名就可以了。
默认回调类已更改为..
默认回调..改为..,自定义回调可以忽略此项
将改为 code,方便大家统一查找,原错误码描述
好 = 0
成功
= -1
未知错误
= -2
用户手动取消
= -12
网络未连接
= -13
网络连接超时
= -14
网络超时
= -15
网络 io 错误
= -16
网络未知主机错误
= -21
网络 SSL 错误
=
系统异常
=
参数错误
=
非法配置()
=
授权域配置错误
=
缺少参数
=
非法重定向 URL
=
代码无效
=
无效的
=
非法参数
=
已到期
=
授权认证失败
授权认证失败,需要完善签名信息,点击查看详情,请在手机上安装您的在线包(应用市场发布的包),然后使用签名工具生成签名。
常问问题
问:全屏和半屏有什么区别?
全屏:或iOS App集成授权SDK,打开授权登录页面
半屏:抖音端h5页面使用抖音授权登录,需要集成js sdk才能拉起抖音授权登录页面
问:取消授权通知
用户可以在抖音APP-设置-账号与安全-授权管理中撤销应用的授权。如需及时获知用户取消授权的消息,请接入取消授权事件通知,具体调用方式请参考-事件。
Q:为什么同一个应用程序,签名工具得到的签名信息不一样?
签名工具的使用方法是:先下载你的应用的包(发布到应用市场的包)到手机,然后安装签名工具,输入你的应用的包名,然后就可以获取签名了。如果你安装电脑本地打印出来的包来获取签名,此时获取到的签名和在线包的签名不一样,会造成错误代码。