2015-11-02 9 views
5

मैंने के लिए लिखे गए XCode 7.1 प्रोजेक्ट में नवीनतम फेसबुक एसडीके जोड़ा है। दुर्भाग्य से मुझे पता है कि स्विफ्ट, उद्देश्य सी है। Facebook's developer site documentation में केवल ऑब्जेक्टिव C में प्रलेखन है। Google पर प्रत्येक खोज दस्तावेज़ीकरण को प्रकट करती है जो कि बहुत पुरानी है क्योंकि पिछले 6 महीनों में चीजें इतनी बदल गई हैं। तो मैं तरह खो गया हूँ।स्विफ्ट 2.0 और आईओएस 9.1 का उपयोग करके मैं फेसबुक लॉगिन कैसे कर सकता हूं?

मैंने प्लिस्ट फ़ाइल के साथ सभी आसान चीज़ें कीं।

मैं का उपयोग करने में सक्षम था:

import FBSDKCoreKit 
import FBSDKLoginKit 

मैं भी कहा:

return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 

और

return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 

मेरी AppDelegate.swift फ़ाइल करने के लिए। यह सब काम करता है और सफलतापूर्वक बनाता है। स्पष्ट रूप से, मेरे पास सही रूपरेखा भी शामिल हैं। इस बिंदु से परे मैं एक स्थिर स्थिति में हूं क्योंकि मुझे लॉगिन बटन जोड़ने के लिए सिंटैक्स नहीं पता है, जो मुझे लगता है उसे कैप्चर करने के लिए टोकन और अन्य प्रोफाइल जानकारी के साथ जेसन स्ट्रिंग लौटा दी जाएगी जिसका उपयोग मैं उपयोगकर्ता के खाते में स्टोर करने के लिए कर सकता हूं, आदि।

उत्तर

8

आप सही रास्ते पर हैं।

Have you set up your pList yet?

आप करने वाले हैं, अपने कुलपति को जोड़ने के लिए एक प्रवेश बटन जोड़ने के लिए, प्रतिनिधि के साथ सौदा है, और फिर अमेरिकन प्लान की जानकारी के साथ सौदा किया है। की तरह (लेकिन वास्तव में नहीं) यह कुछ:

class yourVC: UIViewController, FBSDKLoginButtonDelegate, UITextFieldDelegate 

{ 
var loginView : FBSDKLoginButton = FBSDKLoginButton() 

viewDidLoad() { 
      loginView.frame = CGRectMake(20, 20, theWidth-40, 40) 
      self.view.addSubview(loginView) 
      loginView.readPermissions = ["public_profile", "email", "user_friends","user_birthday"] 
      loginView.delegate = self 

} 

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
     if ((error) != nil) 
     { 
     //handle error 
     } else { 
       returnUserData() 
     } 
    } 

func returnUserData() 
    { 


    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,interested_in,gender,birthday,email,age_range,name,picture.width(480).height(480)"]) 
    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

     if ((error) != nil) 
     { 
      // Process error 
      print("Error: \(error)") 
     } 
     else 
     { 
      print("fetched user: \(result)") 
      let id : NSString = result.valueForKey("id") as! String 
      print("User ID is: \(id)") 
      //etc... 
     } 
     }) 
} 

आप करने वाले हैं यह सही पाने के लिए returnData() भाग के साथ चारों ओर खेलने के लिए है, लेकिन इस कोड को आपको इस प्रक्रिया का 90% मिलना चाहिए।

मैंने अनुमतियों की एक विस्तृत श्रृंखला (उपयोगकर्ता आयु, रुचि, इत्यादि) शामिल की है, लेकिन आपको उन्हें स्वयं कॉन्फ़िगर करना होगा। ईमानदारी से यह हिस्सा (कठिन हिस्सा) वास्तव में इसके ऑब्जेक्ट सी समकक्ष के समान है, जो बहुत बेहतर दस्तावेज है। बस कुछ परियोजनाएं डाउनलोड करें जहां यह काम कर रही है, और अपनी कल्पना के अनुरूप कुछ ऐसी चीजों में उन्हें पार्स करने का प्रयास करें।

इसे सभी काम करने में मुश्किल हो सकती है, लेकिन इसे जाने दो, और इसे जारी रखें!

+2

यह काम करता है! मैं शायद बाकी को समझूंगा। धन्यवाद! –

+1

दोस्त यह कमाल है, कि वापसीUserData() बिट वास्तव में बहुत मदद करता है। उस भाग पर अतिरिक्त मील जाने के लिए धन्यवाद। इसने मेरा दिन वास्तव में आसान बना दिया। –

+0

अहहा कोई समस्या नहीं है। यह सब समझने के लिए मेरे लिए शुद्ध नरक था। सोचा था कि मैं किसी को कुछ आँसू/खून बचाऊंगा। – MQLN

4

आप अपने कस्टम बटन को क्लिक पर फेसबुक से लॉगिन प्रदर्शन करने के लिए चाहते हैं, इस में मदद मिलेगी:

@IBAction func onClickFacebookButton(sender: UIButton){ 
    let login = FBSDKLoginManager() 
    login.loginBehavior = FBSDKLoginBehavior.SystemAccount 
    login.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {(result, error) in 
     if error != nil { 
      print("Error : \(error.description)") 
     } 
     else if result.isCancelled { 

     } 
     else { 
      FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "first_name, last_name, picture.type(large), email, name, id, gender"]).startWithCompletionHandler({(connection, result, error) -> Void in 
       if error != nil{ 
        print("Error : \(error.description)") 
       }else{ 

        print("userInfo is \(result))") 

       } 
      }) 
     } 

    }) 
} 
+2

पहले नाम मुद्रित करने के लिए अगर firstName = result.valueForKeyPath ("first_name") को दें? स्ट्रिंग { प्रिंट ("पहला नाम: \ (फर्स्टनाम)") } –

संबंधित मुद्दे

 संबंधित मुद्दे