抖音开放平台Logo
控制台

iOS 授权

更新时间 2024-08-12 13:25:22
收藏
我的收藏

适用场景​

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

背景信息​

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

准备工作​

    在使用 iOS 授权接入之前,您需要完成接入指南中的申请、配置过程。配置过程请参见 iOS 接入。​
    我们提供授权 SDK Demo,涉及 ClientKey 不能直接运行完整流程,参见下面的说明修改。​

操作步骤​

第一步:引入头文件​

在工程中引入 <DouyinOpenSDK/DouyinOpenSDKAuth.h> 这个头文件。​
cpp
复制
#import <DouyinOpenSDK/DouyinOpenSDKAuth.h>

第二步:构造授权请求及执行​

    1.在需要发起授权或登录的代码中构造发送给抖音的授权请求。​
    2.设置授权域 permissions(scope)。​
    3.设置可选授权 additionalPermissions。​
    4.执行请求。​
js
复制
// 1. 在需要发起授权或登录的代码中构造发送给抖音的授权请求。
DouyinOpenSDKAuthRequest *request = [[DouyinOpenSDKAuthRequest alloc] init];
// 2. 设置授权域 permissions(scope)。
request.permissions = [NSOrderedSet orderedSetWithObject:@"user_info"];
// 3. 设置可选授权 additionalPermissions。
request.additionalPermissions = [NSOrderedSet orderedSetWithObjects:@{ @"permission" : @"mobile",
@"defaultChecked" : @"0" },
nil];
// 4.执行请求。
[request sendAuthRequestViewController:self completeBlock:^(DouyinOpenSDKAuthResponse * _Nonnull resp) {
NSString *alertString = nil;
if (resp.errCode == 0) {
alertString = [NSString stringWithFormat:@"Author Success Code : %@, permission : %@",resp.code, resp.grantedPermissions];
} else {
alertString = [NSString stringWithFormat:@"Author failed code : %@, msg : %@",@(resp.errCode), resp.errString];
}
}];

授权结果说明​

    成功:可通过respond.code 获取用户在选择开放给第三方的信息并确认之后,抖音服务器会返回给第三方应用授权临时票据(authorization code)。​
    失败:可通过respond.errCode获取错误码对应枚举值 DouyinOpenSDKErrorCode 通过respond.errString会返回报错信息。​
错误码对应表:​

H5授权预加载​

注意
该能力在SDK 4.1.16及以上的版本支持​
当用户设备上没有安装抖音,或者无法拉起抖音时,SDK会拉起H5容器加载H5授权页面。​
为了提高此处的用户体验,SDK提供预加载接口提前加载H5页面,优化用户等待体验。​
Objective-C
复制
[request preloadWebAuth];

Tips:​

    1.预加载的H5容器全局唯一,多次预加载时,后一次预加载的容器会顶替掉前一次预加载的容器。​
    a.预加载容器有效期为 1 分钟。​
    2.若本次授权要拉起H5页面授权,如果存在预加载的H5容器,会比较两者页面URL是否相同,若相同则使用预加载容器。​
    a.最后无论是否使用预加载容器,该预加载容器都会主动释放。​

H5授权页面适配iPad版本支持扫码授权​

注意
该能力在SDK 4.1.16及以上的版本支持​
当用户设备为大屏幕Pad时,支持开发者将H5授权页面从 手机号授权模式 转变为 扫码授权模式。​
Objective-C
复制
request.webAuthType = @"qrcode";

FAQ​

无法分享或者授权无法打开抖音短视频​

检查 Info.plist 中是否正确设置 LSApplicationQueriesSchemes 各个 URLSchema 的用途:​
    douyinopensdk:用于跳转抖音短视频进行授权。​
    douyinliteopensdk:用于跳转抖音短视频极速版进行授权。​
    douyinsharesdk:用于跳转抖音短视频进行分享。​
    douyinsharesdkLite:用于跳转抖音短视频极速版进行分享。​
    snssdk1128:用于检测是否安装抖音短视频。如果没有正确设置会导致你的 App 不能正常打开抖音短视频。​

报 Category 找不到的错误 e.g.+[NSString bdsdk_timeStamp][NSString bdsdk_timeStamp]: unrecognized selector sent to class 0x2279a02d0​

在「TARGETS」>「Build Settings」>「Other Linker Flags」中添加-ObjC,字母 O 和 C 大写。​

无法从抖音短视频回跳到您的 app​

检查工程配置中是否正确设置了 URL Schemes。在 Xcode 中,点击「TARGETS」,在「info」标签栏的最下面的 URL Types 的 URL Schemes 中检查你申请得到的 ClientKey 是否正确。​

无法授权或分享​

确定你 App 工程内设置的 BundleID 和 ClientKey 和你在平台网站上申请的是一致的。​

分享携带 ShareID 并没有受到回调​

分享携带 ShareID 需要抖音版本高于 V7.4.0。​

解除授权通知​

用户可在抖音 APP-设置-帐号与安全-授权管理中解除对应用的授权,如需及时获知用户解除授权通知,请接入解除授权事件通知。具体调用方式,请参见 Webhooks-事件。​
更多 FAQ,详见 iOS 常见问题。​