¶ Google 帐号登录
¶ 准备工作
在 Google API Console Credentials 控制台 (opens new window) 及 Authing 管理控制台 (opens new window) 进行配置,请参阅 Google 移动端 (opens new window)。
¶ 集成 Google 登录步骤
¶ 第一步:添加 Google 登录组件依赖
在 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 后勾选 Google 。
¶ 第二步:修改项目配置
配置 Google 登录组件回跳 URL:
- 选择 Xcode 工程,在 Targets -> Info -> URL Types 中点击加号。
- URL Schemes 添加 Google 控制台的 iOS URL scheme 。
iOS URL scheme
添加 URL Types
¶ 第三步:初始化 Google 组件
在 AppDelegate 或 SceneDelegate 中加入 import Guard 和 import Google 。
调用 Authing.start() 初始化 Guard SDK 。
Google.register 需要传入 Google 控制台发放的 clientID 和 serverClientId 。
clientID 为 Google 控制台 iOS 应用的 ClientID, serverClientId 为 Google 控制台 Web 应用的 ClientID。
import Guard
import Google
Authing.start(<#AUTHING_APP_ID#>)
Google.register(clientID: <#iOS ClientId#>, serverClientId: <#Oauth Web ClientId#>)
¶ 第四步:添加回调
登录成功返回应用后,如果使用了 SceneDelegate,则需要在 SceneDelegate.swift 里面重载下面的函数:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url {
_ = Google.handleURL(url: url)
}
}
如果未使用 SceneDelegate,则需要在 AppDelegate 里面重载以下函数。
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return Google.handleURL(url: url)
}
¶ 第五步:发起 Google 授权
Google 登录组件提供了三种授权方式:
- 开发者在需要登录时调用一键登录 API:
Google.login(viewController: <#承载视图的ViewController#>) { code, message, userInfo in
if (code == 200) {
// userInfo:用户信息
}
}
- 通过我们提供的语义化 Hyper Component,只需要在 xib 里面放置一个:
GoogleSignInButton
设置 Module 为 Google,Build success 后点击 GoogleSignInButton 即可登录。
- 如果想自己接入 Google 授权整个流程,拿到授权码后,可以调用下面 API 换取 Authing 用户信息:
func loginByGoogle(_ code: String, completion: @escaping(Int, String?, UserInfo?) -> Void)
参数
authCode
Google 授权码
示例
AuthClient().loginByGoogle(authCode) { code, message, userInfo in
if (code == 200) {
// userInfo:用户信息
}
}