¶ Facebook 登录
更新时间: 2024-10-10 07:28:40
¶ 准备工作
在 Facebook 开放平台 (opens new window) 及 Authing Console 控制台 (opens new window)进行配置,请参阅 FaceBook 接入准备、FaceBook 官方文档 (opens new window)。
¶ 集成 Facebook 登录
¶ 第一步:添加 Facebook 依赖
在 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 后勾选 Facebook 。
¶ 第二步:Info.plist 里面添加白名单
右键点击 Info.plist,然后选择 Open As(打开方式)▸ Source Code(源代码)。
将下列 XML 代码片段复制并粘贴到文件正文中。
APP-ID 对应 Facebook 开发者后台的应用编号。 CLIENT-TOKEN 可以在 Facebook 开发者后台应用面板设置 > 高级 > 客户端口令中找到此值。 APP-NAME 对应 Facebook 开发者后台的应用名称。
注意 CFBundleURLSchemes 的 APP-ID 之前需要拼接 fb。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fbAPP-ID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>APP-ID</string>
<key>FacebookClientToken</key>
<string>CLIENT-TOKEN</string>
<key>FacebookDisplayName</key>
<string>APP-NAME</string>
¶ 第三步:初始化 Facebook 登录
import Guard
import Facebook
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Authing.start(<#AUTHING_APP_ID#>)
Facebook.register(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if "\(url)".contains(Facebook.getAppId()) {
return Facebook.application(app, open: url, options: options)
}
}
}
¶ 第四步:发起 Facebook 登录授权
¶ Facebook 授权登录
func login(viewController: UIViewController, completion: @escaping Authing.AuthCompletion) -> Void
参数
- viewController 承载视图的 AuthViewController
示例
Facebook.login(viewController: <#ViewController#>) { code, message, userInfo in
if (code == 200) {
// 登录成功
// userInfo
}
}
如果开发者自己集成 Facebook 登录,拿到 AccessToken 后,可以调用以下 API 换取 Authing 用户信息:
¶ 通过 Facebook 授权码登录
func loginByFacebook(_ accessToken: String, completion: @escaping(Int, String?, UserInfo?) -> Void)
参数
- accessToken Facebook 授权成功后返回的 AccessToken
示例
AuthClient().loginByFacebook(accessToken) { code, message, userInfo in
// userInfo
}