Suche…


FacebookSDK-Integration

Schritt 1: Installieren Sie das SDK

Sie können das SDK manuell oder über CocoaPods installieren. Die letztere Option wird dringend empfohlen.

Podfile diese Zeilen in Podfile :

target 'MyApp' do
  use_frameworks!

  pod 'FBSDKCoreKit'
  pod 'FBSDKLoginKit'
  pod 'FBSDKShareKit'
end

Führen Sie die pod install im Terminal aus und öffnen Sie anschließend .xcworkspace anstelle von .xcodeproj .

FBSDKLoginKit und FBSDKShareKit sind optional. Möglicherweise brauchen Sie sie nicht.

Schritt 2: Erstellen Sie eine App auf Facebook

Gehen Sie zu Schnellstart - Facebook für Entwickler , um eine App zu erstellen.

Facebook fordert Sie auf, das SDK nach der Erstellung der App herunterzuladen. Sie können diesen Teil überspringen, wenn Sie das SDK bereits über CocoaPods installiert haben.

Schritt 3: Bearbeiten Sie die .plist

ein. Damit Ihre App mit Facebook "kommunizieren" kann, müssen Sie einige Einstellungen in Ihrer .plist Datei .plist . Facebook zeigt Ihnen das angepasste Snippet auf der Schnellstartseite.

b. Bearbeiten Sie Ihre .plist Datei als Quellcode.

Geben Sie hier die Bildbeschreibung ein

c. Fügen Sie Ihr benutzerdefiniertes Snippet in den Quellcode ein. Achtung! Das Snippet muss genau das Kind des <dict> -Tags sein. Ihr Quellcode sollte ungefähr so ​​aussehen:

<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>

Wenn Sie das Snippet an einer falschen Stelle einfügen, stoßen Sie auf Probleme.

Schritt 4: Teilen Sie Facebook Ihre Paketkennung auf der Schnellstartseite mit.

=> Wie bekomme ich eine Paketkennung?

Schritt 5: Bearbeiten Sie Ihre AppDelegate.swift

ein.

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)
}

Erstellen Sie Ihren eigenen benutzerdefinierten Button "Mit Facebook anmelden"

Manchmal möchten wir eine eigene Benutzeroberfläche für die Schaltfläche "Mit Facebook anmelden" anstelle der mit FacebookSDK gelieferten Schaltfläche erstellen.

  1. Ziehen Sie in Ihrem Storyboard Ihren UIButton und stellen Sie ihn so ein, wie Sie möchten.
  2. Strg + Ziehen Sie Ihre Schaltfläche als IBAction auf Ihren View-Controller.
  3. In der IBAction-Methode müssen Sie den tatsächlichen Facebook-Button wie folgt antippen:

Schnell:

    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)

Ziel 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];

Sie sind fertig.

Facebook-Benutzerdaten abrufen

Nachdem sich der Benutzer bei Ihrer App bei Facebook angemeldet hat, können Sie jetzt die von den FBButton.readPermissions angeforderten Daten FBButton.readPermissions .

Schnell:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow