iOS
在iOS应用中使用Swift实现Facebook登录的技术指南
11 分
使用 swift 教程将 facebook 登录添加到您的 ios 应用程序 介绍 本节解释了如何使用 facebook 登录和 https //www back4app com/product/parse server 创建具有用户注册的应用程序,通过 back4app 先决条件 要完成此快速入门,您需要: https //developer apple com/xcode/ 在 back4app 创建的应用程序。 请遵循 https //www back4app com/docs/get started/new parse app 以了解如何在 back4app 上创建 parse 应用程序。 一个连接到 back4app 的 ios 应用程序。 注意: 请遵循 https //www back4app com/docs/ios/parse objc sdk 以创建一个连接到 back4app 的 xcode 项目。 1 facebook 设置 要开始使用 facebook 功能,您需要: 访问 https //developers facebook com/ 并创建一个帐户和一个应用程序。 在您的 parse 应用程序的设置页面上添加您的应用程序的 facebook 应用程序 id。 按照 facebook 的说明进行 https //developers facebook com/docs/ios/getting started 以创建一个与 facebook sdk 关联的应用程序。 2 将您的 facebook 应用与 back4app 连接 前往您的应用程序仪表板,访问 https //www back4app com/ 并点击 服务器设置 服务器设置 找到“facebook 登录”模块并点击 设置 设置 。 “facebook 登录”模块看起来是这样的 3\ 返回您的 xcode 项目,打开您的 info plist info plist 从 https //developers facebook com/docs/facebook login/ios , 第 4a 步,项目 2,复制代码并粘贴到您的 \<dict> \</dict> \<dict> \</dict> 部分的 info plist 中。 4\ 为了使用 facebook 的对话框,也请将第 4a 节,项目 3 中的代码复制并粘贴到您的 info plist info plist 文件中。 5\ 保存 3 设置您的应用程序 在您初始化 parse sdk 后,将以下内容添加到您的 application\ didfinishlaunchingwithoptions 方法中 1 import fbsdkcorekit 2 import parse 3 4 // appdelegate swift 5 func application(application uiapplicatiofunc application( application uiapplication, didfinishlaunchingwithoptions launchoptions \[uiapplication launchoptionskey any]?) > bool { 6 // initialize parse 7 let parseconfig = parseclientconfiguration { 8 $0 applicationid = "parseappid" 9 $0 clientkey = "parseclientkey" 10 $0 server = "parseserverurlstring" 11 } 12 parse initialize(with parseconfig) 13 pffacebookutils initializefacebook(applicationlaunchoptions launchoptions) 14 } 2\ 在您的应用程序代理中添加以下处理程序: 1 func application( application uiapplication, open url url, sourceapplication string?, annotation any) > bool { 2 3 return fbsdkapplicationdelegate sharedinstance() application( 4 application, 5 open url, 6 sourceapplication sourceapplication, 7 annotation annotation 8 ) 9 10 } 11 12 func application( app uiapplication, open url url, options \[uiapplication openurloptionskey any] = \[ ]) > bool { 13 14 return fbsdkapplicationdelegate sharedinstance() application( 15 app, 16 open url, 17 sourceapplication options\[ sourceapplication] as? string, 18 annotation options\[ annotation] 19 ) 20 21 } 22 23 //make sure it isn't already declared in the app delegate (possible redefinition of func error) 24 func applicationdidbecomeactive( application uiapplication) { 25 fbsdkappevents activateapp() 26 } 4 登录与注册 pfuser pfuser 提供了一种方式,让您的用户通过 facebook 登录或注册。这是通过使用 logininbackgroundwithreadpermissions logininbackgroundwithreadpermissions 方法来实现的,如下所示: 1 pffacebookutils logininbackground(withreadpermissions permissions) { 2 (user pfuser?, error error?) in 3 if let user = user { 4 if user isnew { 5 print("user signed up and logged in through facebook!") 6 } else { 7 print("user logged in through facebook!") 8 } 9 } else { 10 print("uh oh the user cancelled the facebook login ") 11 } 12 } 当这段代码运行时,发生以下情况: 用户会看到 facebook 登录对话框。 用户通过 facebook 进行身份验证,您的应用程序会使用 handleopenurl handleopenurl 我们的 sdk 接收用户的 facebook 访问数据并将其保存到 pfuser pfuser 如果没有与相同 facebook id 的 pfuser pfuser 存在,则会创建一个新的 pfuser pfuser 。 您的代码块将与用户一起被调用。 当前用户引用将更新为此用户。 权限参数是一个字符串数组,指定您的应用程序需要 facebook 用户的哪些权限。这些权限必须仅包括读取权限。 要获取用户的发布权限,以便您的应用程序可以例如代表他们发布状态更新,您必须调用 \[pffacebookutils logininbackgroundwithpublishpermissions ] logininbackgroundwithpublishpermissions ] 1 pffacebookutils logininbackgroundwithpublishpermissions(\["publish actions"], { 2 (user pfuser?, error nserror?) > void in 3 if user != nil { 4 // your app now has publishing permissions for the user 5 } 6 }) 5 关联 如果您想将现有的 pfuser pfuser 关联到一个 facebook 账户,可以这样链接 1 if !pffacebookutils islinkedwithuser(user) { 2 pffacebookutils linkuserinbackground(user, withreadpermissions nil, { 3 (succeeded bool?, error nserror?) > void in 4 if succeeded { 5 print("woohoo, the user is linked with facebook!") 6 } 7 }) 8 } 6 解除关联 如果您想解除用户与 facebook 的关联,只需这样做 1 pffacebookutils unlinkuserinbackground(user, { 2 (succeeded bool?, error nserror?) > void in 3 if succeeded { 4 print("the user is no longer associated with their facebook account ") 5 } 6 })