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.

voer hier de afbeeldingsbeschrijving in

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.

  1. Sleep in uw storyboard uw UIButton en stel deze in zoals u wilt.
  2. Ctrl + sleep uw knop naar uw weergavecontroller als IBAction.
  3. 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
                        }
                    }
                }
            }
        }
    })
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow