抖音开放平台Logo
开发者文档
控制台
  • 移动应用
  • open SDK 概述
  • open SDK 下载
  • open SDK 接入
  • 抖音分享
  • 抖音投稿发布
  • 抖音授权
  • 授权概述
  • 获取授权令牌
  • iOS
  • iOS 授权
  • Android
  • 授权页面配置备注
  • 鸿蒙
  • 常见问题
  • 网站应用
  • 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。​

    解除授权通知​

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