Buscar..
Integración de FacebookSDK
Paso 1: Instala el SDK
Puede instalar el SDK manualmente o a través de CocoaPods
. La última opción es muy recomendable.
Ponga estas líneas en Podfile
:
target 'MyApp' do
use_frameworks!
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
end
Ejecute pod install
en el terminal y abra .xcworkspace
lugar de .xcodeproj
después.
FBSDKLoginKit
y FBSDKShareKit
son opcionales. Puede o no puede necesitarlos.
Paso 2: Crea una aplicación en Facebook
Vaya a Inicio rápido: Facebook para desarrolladores para crear una aplicación.
Facebook te pedirá que descargues el SDK después de crear la aplicación. Puede omitir esta parte si ya instaló el SDK a través de CocoaPods.
Paso 3: Editar .plist
a. Para que su aplicación pueda "comunicarse" con Facebook, debe poner algunas configuraciones en su archivo .plist
. Facebook te dará el fragmento personalizado en la página de inicio rápido.
segundo. Edite su archivo .plist
como código fuente.
do. Pega tu fragmento personalizado en el código fuente. ¡Ten cuidado! El fragmento debe ser exactamente el hijo de la etiqueta <dict>
. Su código fuente debe ser algo como:
<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>
Si pega el fragmento en un lugar incorrecto, se encontrará con problemas.
Paso 4: informe a Facebook su identificador de paquete en la página de inicio rápido.
=> Cómo obtener el identificador de paquete
Paso 5: Edita tu AppDelegate.swift
a.
import FBSDKCoreKit
segundo.
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)
}
Creando su propio botón "Iniciar sesión con Facebook" personalizado
A veces, queremos diseñar nuestra propia interfaz de usuario para el botón "Iniciar sesión con Facebook" en lugar del botón original que viene con FacebookSDK.
- En tu guión gráfico, arrastra tu UIButton y configúralo como quieras que sea.
- Ctrl + arrastre su botón a su controlador de vista como IBAction.
- Dentro del método IBAction, tendrá que simular un toque en el botón real de Facebook de la siguiente manera:
Rápido:
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)
C objetivo:
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];
Estas hecho
Obteniendo los datos de usuario de facebook
Después de que el usuario haya FBButton.readPermissions
en Facebook desde su aplicación, ahora es el momento de buscar los datos que solicitó en FBButton.readPermissions
.
Rápido:
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
}
}
}
}
}
})
}