Zoeken…
FacebookSDK-integratie
Stap 1: Installeer de SDK
U kunt de SDK handmatig of via CocoaPods
. De laatste optie wordt sterk aanbevolen.
Zet deze regels in Podfile
:
target 'MyApp' do
use_frameworks!
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
end
Voer pod install
in de terminal en open daarna .xcworkspace
plaats van .xcodeproj
.
FBSDKLoginKit
en FBSDKShareKit
zijn optioneel. Je hebt ze misschien wel of niet nodig.
Stap 2: Maak een app op Facebook
Ga naar Quick Starts - Facebook voor ontwikkelaars om een app te maken.
Facebook zal u vragen om de SDK te downloaden na het maken van de app. Je kunt dit deel overslaan als je de SDK al via CocoaPods hebt geïnstalleerd.
Stap 3: Bewerk .plist
een. Om uw app in staat te stellen te "communiceren" met Facebook, moet u enkele instellingen in uw .plist
bestand opnemen. Facebook geeft je het aangepaste fragment op de Quick Starts-pagina.
b. Bewerk uw .plist
bestand als broncode.
c. Plak uw aangepaste fragment in de broncode. Doe voorzichtig! Het fragment moet exact het kind van de tag <dict>
. Uw broncode zou ongeveer moeten zijn als:
<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>
Als u het fragment op een verkeerde plaats plakt, ondervindt u problemen.
Stap 4: vertel Facebook uw bundel-ID op de Quick Start-pagina.
=> Hoe een bundel-ID te krijgen
Stap 5: Bewerk uw AppDelegate.swift
een.
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)
}
Uw eigen aangepaste knop 'Aanmelden met Facebook' maken
Soms willen we onze eigen gebruikersinterface ontwerpen voor de knop 'Aanmelden met Facebook' in plaats van de originele knop die bij FacebookSDK wordt geleverd.
- Sleep in uw storyboard uw UIButton en stel deze in zoals u wilt.
- Ctrl + sleep uw knop naar uw weergavecontroller als IBAction.
- In de IBAction-methode simuleert u een tik op de daadwerkelijke Facebook-knop als volgt:
Snel:
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)
Doelstelling 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];
Je bent klaar.
De Facebook-gebruikersgegevens ophalen
Nadat de gebruiker zich heeft aangemeld bij Facebook in uw app, is het nu tijd om de gevraagde gegevens op te halen bij de FBButton.readPermissions
.
Snel:
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
}
}
}
}
}
})
}