Поиск…
Интеграция с FacebookSDK
Шаг 1: Установите SDK
Вы можете установить SDK вручную или через CocoaPods
. Последний вариант настоятельно рекомендуется.
Поместите эти строки в Podfile
:
target 'MyApp' do
use_frameworks!
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
end
Запустите pod install
в терминале и откройте .xcworkspace
вместо .xcodeproj
.
FBSDKLoginKit
и FBSDKShareKit
являются необязательными. Вы можете или не нуждаться в них.
Шаг 2. Создание приложения на Facebook.
Перейдите в Quick Starts - Facebook для разработчиков, чтобы создать приложение.
Facebook попросит вас загрузить SDK после создания приложения. Вы можете пропустить эту часть, если вы уже установили SDK через CocoaPods.
Шаг 3: Изменить .plist
а. Чтобы ваше приложение могло «общаться» с Facebook, вам нужно поместить некоторые настройки в ваш .plist
файл. Facebook предоставит вам настроенный фрагмент на странице быстрого запуска.
б. Измените файл .plist
как исходный код.
с. Вставьте свой собственный фрагмент кода в исходный код. Быть осторожен! Фрагмент должен быть точно дочерним тегом <dict>
. Ваш исходный код должен выглядеть примерно так:
<plist version="1.0">
<dict>
// ...
//some default settings
// ...
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{FBAppId}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>{FBAppId}</string>
<key>FacebookDisplayName</key>
<string>{FBAppName}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
</plist>
Если вы вставляете фрагмент в неправильное место, вы столкнетесь с проблемами.
Шаг 4. Расскажите Facebook свой идентификатор пакета на странице быстрого запуска.
=> Как получить идентификатор пакета
Шаг 5: Отредактируйте свой AppDelegate.swift
а.
import FBSDKCoreKit
б.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
Создание собственной пользовательской кнопки «Войти в Facebook»
Иногда мы хотим создать собственный пользовательский интерфейс для кнопки «Войти в Facebook» вместо оригинальной кнопки, которая поставляется с FacebookSDK.
- В своем раскадровке перетащите свой UIButton и установите его, как бы вы этого ни хотели.
- Ctrl + перетащите кнопку на контроллер вида в виде IBAction.
- Внутри метода IBAction вы будете симулировать нажатие на фактическую кнопку Facebook следующим образом:
Swift:
let loginButton = FBSDKLoginButton()
loginButton.delegate = self
// Your Custom Permissions Array
loginButton.readPermissions =
[
"public_profile",
"email",
"user_about_me",
"user_photos"
]
// Hiding the button
loginButton.hidden = true
self.view.addSubview(loginButton)
// Simulating a tap for the actual Facebook SDK button
loginButton.sendActionsForControlEvents(UIControlEvents.TouchUpInside)
Objective-C:
FBSDKLoginButton *FBButton = [FBSDKLoginButton new];
// Your Custom Permissions Array
FBButton.readPermissions = @[@"public_profile",
@"email",
@"user_about_me",
@"user_photos"
];
FBButton.loginBehavior = FBSDKLoginBehaviorNative;
[FBButton setDelegate:self];
[FBButton setHidden:true];
[loginButton addSubview:FBButton];
[FBButton sendActionsForControlEvents:UIControlEventTouchUpInside];
Все готово.
Получение пользовательских данных facebook
После того, как пользователь зарегистрировался в Facebook в своем приложении, пришло время получить данные, запрошенные вами на FBButton.readPermissions
.
Swift:
enum FacebookParametesField : String
{
case FIELDS_KEY = "fields"
case FIELDS_VALUE = "id, email, picture, first_name, last_name"
}
if FBSDKAccessToken.currentAccessToken() != nil
{
// Getting user facebook data
FBSDKGraphRequest(graphPath: "me",
parameters: [FacebookParametesField.FIELDS_KEY.rawValue : FacebookParametesField.FIELDS_VALUE.rawValue])
.startWithCompletionHandler({ (graphConnection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in
if error == nil
{
print("Facebook Graph phaze")
let email = result["email"]
let facebookToken = FBSDKAccessToken.currentAccessToken().tokenString
let userFacebookId = result["id"]
let firstName = result["first_name"]
let lastName = result["last_name"]
if let result = result as? Dictionary<String, AnyObject>
{
if let picture = result["picture"] as? Dictionary<String,AnyObject>
{
if let data = picture["data"] as? Dictionary <String,AnyObject>
{
if let url = data["url"] as? String
{
// Profile picture URL
let profilePictureURL = url
}
}
}
}
}
})
}