¶ 抖音登录
更新时间: 2024-10-10 07:28:40
¶ 准备工作
在 抖音开放平台 (opens new window) 及 Authing Console 控制台 (opens new window)进行配置,请参阅 抖音接入准备、抖音官方文档 (opens new window)。
¶ 集成抖音登录
¶ 第一步:添加 Douyin 依赖
在 swift package 搜索栏输入:https://github.com/Authing/authing-binary 。
Authing-binary (opens new window) 依赖于 Guard-iOS SDK (opens new window)。
依赖规则选择 Up to Next Major Version 1.0.0 。
Add Package 后勾选 Douyin 。
Douyin 依赖于 Guard-iOS 1.4.4 (opens new window) 之后版本。
¶ 第二步:Info.plist 里面添加启动白名单
key: LSApplicationQueriesSchemes
value: douyinopensdk, douyinliteopensdk, douyinv1opensdk, snssdk1128
注意大小写
也可以通过 Source Code 方式打开 Info.plist,然后复制粘贴下面代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>douyinopensdk</string>
<string>douyinliteopensdk</string>
<string>douyinv1opensdk</string>
<string>snssdk1128</string>
</array>
¶ 第三步:修改项目配置
配置抖音登录组件回跳 URL:
- 选择 Xcode 工程,在 Targets -> Info -> URL Types 中点击加号。
- Identifier 填写 douyin。
- URL Schemes 填写抖音开放平台的 AppId。
¶ 第四步:初始化抖音登录
import Guard
import Douyin
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Authing.start(<#AUTHING_APP_ID#>)
Douyin.register(appId: <#your_douyin_appid#>,, application, didFinishLaunchingWithOptions: launchOptions)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return Douyin.application(app, open: url)
}
}
¶ 第五步:发起抖音登录授权
¶ 抖音授权登录
func login(viewController: UIViewController, _ scope: String = "user_info", completion: @escaping Authing.AuthCompletion) -> Void
参数
- viewController 承载视图的 UIViewController
- scope 以逗号分割,默认为 user_info
示例
Douyin.login(viewController: <#ViewController#>) { code, message, userInfo in
if (code == 200) {
// 登录成功
// userInfo
}
}
如果开发者自己集成抖音登录,拿到 AuthorizationCode 后,可以调用以下 API 换取 Authing 用户信息:
¶ 通过抖音授权码登录
func loginByDouyin(_ code: String, completion: @escaping(Int, String?, UserInfo?) -> Void)
参数
code
抖音授权码
示例
AuthClient().loginByDouyin(authCode) { code, message, userInfo in
if (code == 200) {
// userInfo:用户信息
}
}