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.
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.
- Ziehen Sie in Ihrem Storyboard Ihren UIButton und stellen Sie ihn so ein, wie Sie möchten.
- Strg + Ziehen Sie Ihre Schaltfläche als IBAction auf Ihren View-Controller.
- 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
}
}
}
}
}
})
}