खोज…


FacebookSDK एकीकरण

चरण 1: एसडीके स्थापित करें

आप एसडीके को मैन्युअल रूप से या CocoaPods माध्यम से स्थापित कर सकते हैं। बाद वाला विकल्प अत्यधिक अनुशंसित है।

इन पंक्तियों को Podfile में Podfile :

target 'MyApp' do
  use_frameworks!

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

भागो pod install टर्मिनल और खुले में .xcworkspace के बजाय .xcodeproj बाद में।

FBSDKLoginKit और FBSDKShareKit वैकल्पिक हैं। आपको उनकी आवश्यकता हो सकती है या नहीं।

स्टेप 2: फेसबुक पर एक ऐप बनाएं

ऐप बनाने के लिए डेवलपर्स के लिए क्विक स्टार्ट - फेसबुक पर जाएं।

ऐप बनाने के बाद फेसबुक आपको एसडीके डाउनलोड करने के लिए कहेगा। यदि आप पहले से ही CocoaPods के माध्यम से SDK स्थापित करते हैं तो आप इस हिस्से को छोड़ सकते हैं।

चरण 3: संपादित करें .plist

ए। अपने ऐप को फेसबुक के साथ "संवाद" करने में सक्षम बनाने के लिए, आपको अपनी .plist फ़ाइल में कुछ सेटिंग्स डालने की आवश्यकता है। फेसबुक आपको क्विक स्टार्ट पेज पर कस्टमाइज्ड स्निपेट देगा।

ख। स्रोत कोड के रूप में अपनी .plist फ़ाइल को संपादित करें।

यहाँ छवि विवरण दर्ज करें

सी। स्रोत कोड में अपने अनुकूलित स्निपेट चिपकाएँ। सावधान रहे! स्निपेट वास्तव में <dict> टैग का बच्चा होना चाहिए। आपका स्रोत कोड कुछ इस तरह होना चाहिए:

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

यदि आप स्निपेट को गलत जगह पर चिपकाते हैं, तो आप समस्याओं में भाग जाएंगे।

चरण 4: त्वरित आरंभ पृष्ठ पर फेसबुक को अपना बंडल पहचानकर्ता बताएं।

=> बंडल पहचानकर्ता कैसे प्राप्त करें

चरण 5: अपना AppDelegate.swift संपादित करें

ए।

import FBSDKCoreKit

ख।

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

अपना खुद का कस्टम बनाना "साइन इन विद फ़ेसबुक" बटन

कभी-कभी हम अपने खुद के UI को "साइन इन विद फ़ेसबुक" बटन के लिए डिज़ाइन करना चाहते हैं बजाय मूल बटन के जो FacebookSDK के साथ आता है।

  1. अपने स्टोरीबोर्ड में, अपने UIButton को खींचें और इसे सेट करें हालांकि आप चाहते हैं कि यह हो।
  2. Ctrl + IBAction के रूप में अपने बटन को अपने दृश्य नियंत्रक पर खींचें।
  3. आईबीएशन विधि के अंदर आपको वास्तविक फेसबुक बटन पर एक टैप अनुकरण होगा:

स्विफ्ट:

    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)

उद्देश्य सी:

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

हो गया।

फ़ेसबुक उपयोगकर्ता डेटा ला रहा है

आपके ऐप में फेसबुक पर उपयोगकर्ता द्वारा हस्ताक्षर किए जाने के बाद, अब आपके FBButton.readPermissions पर आपके द्वारा अनुरोधित डेटा लाने का समय है।

स्विफ्ट:

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
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow