Интеграция Facebook Входа в iOS на Swift
11 мин
добавьте вход через facebook в ваше ios приложение с помощью swift введение в этом разделе объясняется, как вы можете создать приложение с регистрацией пользователей с использованием входа через facebook и основные функции parse server https //www back4app com/product/parse server через back4app предварительные требования чтобы завершить этот быстрый старт, вам нужно xcode https //developer apple com/xcode/ приложение, созданное на back4app следуйте за учебником по созданию нового parse приложения https //www back4app com/docs/get started/new parse app чтобы узнать, как создать приложение parse на back4app ios приложение, подключенное к back4app примечание следуйте за учебником по установке parse sdk (objc) https //www back4app com/docs/ios/parse objc sdk чтобы создать проект xcode, подключенный к back4app 1 настройка facebook чтобы начать использовать функции facebook, вам нужно перейдите на сайт разработчиков facebook https //developers facebook com/ и создайте учетную запись и приложение добавьте идентификатор приложения facebook вашего приложения на странице настроек вашего приложения parse следуйте инструкциям facebook по началу работы с facebook sdk https //developers facebook com/docs/ios/getting started для создания приложения, связанного с facebook sdk 2 свяжите ваше приложение facebook с back4app перейдите на панель управления вашим приложением по адресу сайт back4app https //www back4app com/ и нажмите на \<font color="#2166ae">настройки сервера\</font> найдите блок “facebook login” и нажмите на \<font color="#2166ae">настройки\</font> блок “facebook login” выглядит так 3\ вернитесь к вашему проекту xcode, откройте ваш \<font color="#2166ae">info plist\</font> скопируйте код из конфигурация facebook https //developers facebook com/docs/facebook login/ios , шаг 4a, пункт 2, и вставьте его в \<font color="#2166ae">\<dict\> \</dict\>\</font> часть вашего info plist 4\ чтобы использовать диалоговое окно от facebook, также скопируйте и вставьте код из раздела 4a, пункт 3 в ваш \<font color="#2166ae">info plist\</font> файл 5\ сохраните 3 настройка вашего приложения добавьте следующее в метод application\ didfinishlaunchingwithoptions , после инициализации sdk parse 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 вход и регистрация \<font color="#2166ae">pfuser\</font> предоставляет способ позволить вашим пользователям входить в систему или регистрироваться через facebook это делается с помощью метода \<font color="#2166ae">logininbackgroundwithreadpermissions\</font> следующим образом 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, и ваше приложение получает обратный вызов с помощью \<font color="#2166ae">handleopenurl\</font> наш sdk получает данные доступа пользователя к facebook и сохраняет их в \<font color="#2166ae">pfuser\</font> если не существует \<font color="#2166ae">pfuser\</font> с тем же идентификатором facebook, то создается новый \<font color="#2166ae">pfuser\</font> ваш блок кода вызывается с пользователем ссылка на текущего пользователя будет обновлена на этого пользователя аргумент разрешений — это массив строк, который указывает, какие разрешения ваше приложение требует от пользователя facebook эти разрешения должны включать только разрешения на чтение чтобы получить разрешения на публикацию для пользователя, чтобы ваше приложение могло, например, публиковать обновления статуса от его имени, вы должны вызвать \[pffacebookutils \<font color="#2166ae">logininbackgroundwithpublishpermissions ] \</font> 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 связывание если вы хотите связать существующий \<font color="#2166ae">pfuser\</font> с аккаунтом 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 })