iOS 授权
收藏
我的收藏适用场景
本能力适用于通过使用抖音短视频授权,获取使用抖音短视频登录第三方应用的权限。
背景信息
移动应用使用抖音短视频授权是基于 OAuth2.0 协议标准。抖音短视频授权采用 OAuth2.0 的授权码(authorization code)方式,首先需要获取一个临时票据,再用该临时票据获取令牌(access_token),然后通过该令牌获取用户信息。详情请参见总体授权说明。
准备工作
- •在使用 iOS 授权接入之前,您需要完成接入指南中的申请、配置过程。配置过程请参见 iOS 接入。
- •我们提供授权 SDK Demo,涉及 ClientKey 不能直接运行完整流程,参见下面的说明修改。
操作步骤
第一步:引入头文件
在工程中引入
<DouyinOpenSDK/DouyinOpenSDKAuth.h>
这个头文件。#import <DouyinOpenSDK/DouyinOpenSDKAuth.h>
第二步:构造授权请求及执行
- 1.在需要发起授权或登录的代码中构造发送给抖音的授权请求。
- 2.设置授权域 permissions(scope)。
- 3.设置可选授权 additionalPermissions。
- 4.执行请求。
// 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页面,优化用户等待体验。
[request preloadWebAuth];
Tips:
- 1.预加载的H5容器全局唯一,多次预加载时,后一次预加载的容器会顶替掉前一次预加载的容器。
- a.预加载容器有效期为 1 分钟。
- 2.若本次授权要拉起H5页面授权,如果存在预加载的H5容器,会比较两者页面URL是否相同,若相同则使用预加载容器。
- a.最后无论是否使用预加载容器,该预加载容器都会主动释放。
H5授权页面适配iPad版本支持扫码授权
注意
该能力在SDK 4.1.16及以上的版本支持
当用户设备为大屏幕Pad时,支持开发者将H5授权页面从 手机号授权模式 转变为 扫码授权模式。
request.webAuthType = @"qrcode";
H5授权页面支持运营商一键取号
注意
该能力在SDK 4.1.17及以上的版本支持
当用户设备处于使用流量的状态时,H5授权页面支持运营商提供的一键取号能力,节省用户输入手机号的时间。
请在拉起H5授权页面前,执行一次以下代码,DouyinOpenSDKWebAuthManager会判断当前网络环境是否为WIFI or 流量。仅流量场景下,H5授权页面会执行一键取号能力。
[[DouyinOpenSDKWebAuthManager shareManager] startWifiStatusMonitor];
如果开发者希望关闭此能力,执行一次以下代码,H5授权页面默认所有的授权环境都是WIFI场景。
[[DouyinOpenSDKWebAuthManager shareManager] cancelWifiStatusMonitor];
FAQ
无法分享或者授权无法打开抖音短视频
检查 Info.plist 中是否正确设置 LSApplicationQueriesSchemes 各个 URLSchema 的用途:
- •douyinopensdk:用于跳转抖音短视频进行授权。
- •douyinliteopensdk:用于跳转抖音短视频极速版进行授权。
- •douyinsharesdk:用于跳转抖音短视频进行分享。
- •douyinsharesdkLite:用于跳转抖音短视频极速版进行分享。
- •snssdk1128:用于检测是否安装抖音短视频。如果没有正确设置会导致你的 App 不能正常打开抖音短视频。
- •尝试卸载设备上的抖音短视频,在正常的网络环境下(无代理场景),或者使用流量,在App Store上下载最新版本的抖音短视频,再尝试一次。
- ◦iOS SDK 使用Apple官方提供的 Universal link 能力打开抖音短视频,该方案依赖于首次安装抖音短视频时从苹果服务器下载的配置文件。在异常的网络环境配置文件会下载失败导致不能唤起抖音短视频。需要在正常的网络环境下重新安装抖音短视频。
报 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。
解除授权通知