iOS/macOS
配置Authok
获取应用密钥
你需要如下信息
- Domain
- Client ID
- Client Secret
配置回调URL
配置 Logout URL
配置 AuthOK
回调URL 配置:
iOS
YOUR_BUNDLE_IDENTIFIER://YOUR_DOMAIN/ios/YOUR_BUNDLE_IDENTIFIER/callback
macOS
YOUR_BUNDLE_IDENTIFIER://YOUR_DOMAIN/macos/YOUR_BUNDLE_IDENTIFIER/callback
配置 自定义URL Scheme
Xcode >> Info, 在 URL Types 章节, 点击 + 按钮添加自定义URL Scheme. 在 Identifier 字段中输入authok
, 在 URL Schemes字段中输入${PRODUCT_BUNDLE_IDENTIFIER}.
安装SDK
把 Authok.swift SDK添加到工程.
Swift 包管理器
Xcode >> File >> Add Packages, 在 Search or Enter Package URL搜索框中输入
https://github.com/authok/Authok.swift
之后选择 依赖规则 并点击 Add Package.
Cocoapods
在Podfile
中添加:
pod 'Authok', '~> 1.0'
之后运行pod install
.
Carthage
在Carthage
文件中添加:
github "authok/Authok.swift" ~> 1.0
配置SDK
创建一个名为Authok.plist
的plist
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ClientId</key>
<string>YOUR_CLIENT_ID</string>
<key>Domain</key>
<string>YOUR_DOMAIN</string>
</dict>
</plist>
登录
在需要展示登录页的文件中导入Authok
模块:
import Authok
用登录按钮的调用中唤醒统一登录页面:
Authok
.webAuth()
.start { result in
switch result {
case .success(let credentials):
print("认证成功: \(credentials)")
case .failure(let error):
print("Failed with: \(error)")
}
}
注销
在注销按钮的调用中执行以下代码:
Authok
.webAuth()
.clearSession { result in
switch result {
case .success:
print("注销成功")
case .failure(let error):
print("Failed with: \(error)")
}
}
访问用户详情
登录成功返回的凭证中包含 ID Token, 其中包含了用户详情如名称,头像等. 可以使用JWTDecode
模块来解码 JWT格式的ID Token.
import JWTDecode
使用decode(jwt:)
解码 ID Token:
guard let jwt = try? decode(jwt: credentials.idToken),
let name = jwt.claim(name: "name").string,
let picture = jwt.claim(name: "picture").string else { return }
print("Name: \(name)")
print("Picture URL: \(picture)")