Sök…
FacebookSDK-integration
Steg 1: Installera SDK
Du kan installera SDK manuellt eller via CocoaPods
. Det senare alternativet rekommenderas starkt.
Sätt dessa linjer i Podfile
:
target 'MyApp' do
use_frameworks!
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
end
Kör pod install
i terminalen och öppna .xcworkspace
istället för .xcodeproj
efteråt.
FBSDKLoginKit
och FBSDKShareKit
är valfria. Du kanske inte behöver dem.
Steg 2: Skapa en app på Facebook
Gå till Quick Starts - Facebook för utvecklare för att skapa en app.
Facebook kommer att be dig att ladda ner SDK efter att du har skapat appen. Du kan hoppa över den här delen om du redan har installerat SDK via CocoaPods.
Steg 3: Redigera .plist
a. För att din app ska kunna "kommunicera" med Facebook måste du lägga till några inställningar i din .plist
fil. Facebook ger dig det anpassade utdraget på sidan Snabbstart.
b. Redigera din .plist
fil som källkod.
c. Klistra in ditt anpassade utdrag i källkoden. Var försiktig! Utdraget måste vara exakt barnet till <dict>
-taggen. Din källkod bör vara något som:
<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>
Om du klistrar in kodstycket på en fel plats kommer du att få problem.
Steg 4: Berätta för Facebook din buntidentifierare på Quick Starts-sidan.
=> Hur man får buntidentifierare
Steg 5: Redigera din AppDelegate.swift
a.
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)
}
Skapa din egen "Logga in med Facebook" -knapp
Ibland vill vi designa vårt eget användargränssnitt för "Logga in med Facebook" -knappen istället för den ursprungliga knappen som kommer med FacebookSDK.
- Dra din UIB-knapp i din storyboard och ställ in den du vill att den ska vara.
- Ctrl + dra din knapp till din visningskontroller som IBAction.
- Inuti IBAction-metoden kommer du att simulera ett tryck på själva Facebook-knappen enligt följande:
Snabb:
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];
Du är klar.
Hämtar facebook-användardata
Efter att användaren har loggat in på Facebook på din app är det nu dags att hämta FBButton.readPermissions
du begärde på FBButton.readPermissions
.
Snabb:
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
}
}
}
}
}
})
}