2015-09-15 11 views
5

मैं अमेरिकन प्लान लॉगिन करने के लिए इस कोड का उपयोग किया गया था:आईओएस के लिए फेसबुक एसडीके 4.6 में लॉगिन का उपयोग कैसे करूं?

@IBAction func fbloginbtn(sender: AnyObject) { 

    FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email","user_location","user_about_me", "user_photos", "user_website"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
     if (error == nil){ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       if((FBSDKAccessToken.currentAccessToken()) != nil){ 
        FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in 
         if (error == nil){ 
          //do sth 
         } 
        }) 
       } 
      } 
     } 
    }) 
} 

लेकिन loginwithreadpermissions एसडीके 4.6

में पदावनत किया गया है मैं इस कोड कैसे बदलना चाहिए?

+0

बस यह सुनिश्चित करने के लिए, 4.6 ** ** ** ** ** ** एसडीके संस्करण है, है ना? ** आईओएस ** एसडीके संस्करण नहीं है? (वह बहुत पुराना होगा)। –

+1

ओह क्षमा करें हाँ यह आईओएस –

+0

के लिए फेसबुक एसडीके है शायद फेसबुक एसडीके से परिचित किसी के लिए यह स्पष्ट है, लेकिन हर किसी के लिए यह थोड़ा उलझन में हो सकता है। इसे ठीक करने के लिए धन्यवाद। –

उत्तर

13

यदि आप दस्तावेज़ीकरण को देखते हैं, तो आपको वैकल्पिक एपीआई का भी उल्लेख दिखाई देगा। FBSDKLoginManager के प्रलेखन से, यह कहते हैं:

- (void)logInWithReadPermissions:(NSArray *)permissions 
         handler:(FBSDKLoginManagerRequestTokenHandler)handler 
__attribute__((deprecated("use logInWithReadPermissions: fromViewController:handler: instead"))); 

तो वहाँ एक नई पद्धति, कि UIViewController के एक अतिरिक्त पैरामीटर के रूप में अच्छी तरह से लेता है, जहां लॉगिन अनुक्रम शुरू किया गया था से निर्धारित करने के लिए है। प्रलेखन कहते हैं:

- (void)logInWithReadPermissions:(NSArray *)permissions 
       fromViewController:(UIViewController *)fromViewController 
       handler:(FBSDKLoginManagerRequestTokenHandler)handler; 

और मापदंडों के लिए स्पष्टीकरण का कहना है:

fromViewController - दृश्य नियंत्रक से पेश करने के लिए। यदि शून्य, शीर्षतम दृश्य नियंत्रक स्वचालित रूप से जितना संभव हो उतना सर्वोत्तम रूप से निर्धारित किया जाएगा।

के बाद से, केवल एक अतिरिक्त पैरामीटर, तो आप इस तरह मौजूदा कार्यान्वयन के लिए यह जोड़ सकते हैं:

FBSDKLoginManager().logInWithReadPermissions(["public_profile", "others"], 
          fromViewController:self //<=== new addition, self is the view controller where you're calling this method. 
          handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
}) 

नवीनतम xcode भी सुझाव है जब आप लिखना चाहिए, सभी उपलब्ध विकल्पों के साथ logInWithReadPermissions

+1

स्विफ्ट में एक उदाहरण मेरे लिए समझने के लिए एक शुरुआत के रूप में सही होगा। –

+0

मेरा संपादन देखें, मैंने तेजी से एक सरल कोड जोड़ा है। –

+0

@AdilSoomro मैं यह जांचने के लिए प्रयोग करता था कि क्या मेरा टोकन यह निर्धारित करने के लिए मान्य था कि उपयोगकर्ता को फिर से लॉगिन करने की आवश्यकता है या नहीं। क्या आपके पास कुछ है? यह मेरा कोड था: "अगर ([FBSession सक्रिय सत्र]। स्टेट == FBSessionStateOpen)"। – Felipe

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