Ricerca…
Integrazione con FacebookSDK
Passaggio 1: installare l'SDK
È possibile installare l'SDK manualmente o tramite CocoaPods
. Quest'ultima opzione è altamente raccomandata.
Metti queste righe in Podfile
:
target 'MyApp' do
use_frameworks!
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
end
Esegui l' pod install
nel terminale e apri .xcworkspace
invece di .xcodeproj
.
FBSDKLoginKit
e FBSDKShareKit
sono opzionali. Potresti o non potresti averne bisogno.
Passaggio 2: crea un'app su Facebook
Vai a Avvio rapido - Facebook per sviluppatori per creare un'app.
Facebook ti chiederà di scaricare l'SDK dopo aver creato l'app. Puoi saltare questa parte se hai già installato l'SDK tramite CocoaPods.
Passaggio 3: modifica .plist
un. Per rendere la tua app in grado di "comunicare" con Facebook, devi inserire alcune impostazioni nel tuo file .plist
. Facebook ti darà lo snippet personalizzato nella pagina Avvio rapido.
b. Modifica il tuo file .plist
come codice sorgente.
c. Incolla lo snippet personalizzato nel codice sorgente. Stai attento! Lo snippet deve essere esattamente il figlio del tag <dict>
. Il tuo codice sorgente dovrebbe essere qualcosa del tipo:
<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>
Se incolli lo snippet in un posto sbagliato, ti imbatterai in problemi.
Passaggio 4: comunica a Facebook l'identificatore del gruppo nella pagina Avvio rapido.
=> Come ottenere l'identificatore del gruppo
Passaggio 5: modifica il tuo AppDelegate.swift
un.
import FBSDKCoreKit
b.
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)
}
Crea il tuo pulsante personalizzato "Accedi con Facebook"
A volte vogliamo progettare la nostra interfaccia utente per il pulsante "Accedi con Facebook" invece del pulsante originale fornito con FacebookSDK.
- Nello storyboard, trascina il tuo UIButton e impostalo come vuoi tu.
- Ctrl + trascina il pulsante sul controller di visualizzazione come IBAction.
- All'interno del metodo IBAction avrai simulato un tap sul pulsante Facebook reale come segue:
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];
Hai finito.
Recupero dei dati dell'utente di Facebook
Dopo che l'utente ha effettuato l'accesso a Facebook nella tua app, ora è il momento di recuperare i dati richiesti su 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
}
}
}
}
}
})
}