2015-11-02 18 views
5

Tôi đã thêm SDK Facebook mới nhất vào dự án XCode 7.1 được viết cho iOS 9.1. Rất tiếc, tất cả những gì tôi biết là Swift, không phải Mục tiêu C. Facebook's developer site documentation chỉ có tài liệu trong Mục tiêu C. Mọi tìm kiếm trên Google đều cho thấy tài liệu quá cũ vì mọi thứ đã thay đổi rất nhiều chỉ trong 6 tháng qua. Vì vậy, tôi là loại bị mất.Làm cách nào để đăng nhập Facebook bằng Swift 2.0 và iOS 9.1?

Tôi đã làm tất cả những thứ dễ dàng với tệp plist.

tôi đã có thể sử dụng:

import FBSDKCoreKit 
import FBSDKLoginKit 

Tôi cũng nói thêm:

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

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

Để tập AppDelegate.swift tôi. Điều này tất cả các công trình và xây dựng thành công. Tôi cũng đã có các khung chính xác được thêm vào. Ngoài điểm này, tôi bế tắc vì tôi không biết cú pháp để thêm nút đăng nhập, để nắm bắt những gì tôi giả định sẽ được trả về các chuỗi json với mã thông báo và thông tin hồ sơ khác mà tôi có thể sử dụng để lưu trữ trong tài khoản của người dùng, v.v. .

Trả lời

8

Bạn đang đi đúng hướng.

Have you set up your pList yet?

Bạn đang gonna có để thêm vào VC của bạn, thêm một nút đăng nhập, đối phó với đại biểu, và sau đó đối phó với thông tin FB. Một cái gì đó tương tự (nhưng không chính xác) này:

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

Bạn đang gonna phải chơi xung quanh với phần returnData() để có được điều đó đúng, nhưng mã này sẽ giúp bạn có 90% con đường đó.

Tôi đã bao gồm một loạt các quyền (tuổi của người dùng, quan tâm, v.v.), nhưng bạn sẽ phải tự định cấu hình chúng. Thành thật mà nói phần này (phần cứng) là thực sự tương tự với đối tượng C đối tượng của nó, đó là tài liệu tốt hơn nhiều. Chỉ cần tải về một số dự án có được nó làm việc, và cố gắng phân tích chúng lại với nhau thành một cái gì đó phù hợp với ưa thích của bạn.

Thật khó để làm cho tất cả hoạt động, nhưng hãy thực hiện nó và tiếp tục!

+2

này hoạt động! Tôi có lẽ sẽ tìm ra phần còn lại. Cảm ơn! –

+1

Dude này là tuyệt vời, mà returnUserData() bit thực sự giúp rất nhiều. Cảm ơn bạn đã đi thêm dặm trên phần đó. Điều đó làm cho ngày của tôi thực sự dễ dàng. –

+0

Ahha không sao. Nhận được điều này tất cả đã tìm ra được địa ngục tinh khiết cho tôi. Nghĩ rằng tôi sẽ cứu một người nào đó nước mắt/máu. – MQLN

4

Nếu bạn muốn thực hiện đăng nhập từ Facebook trên bấm vào nút tùy chỉnh của bạn, điều này sẽ giúp:

@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

Để in tên đầu tiên nếu đặt firstName = result.valueForKeyPath ("first_name") thành? Chuỗi { in ("tên: \ (firstName)") } –

Các vấn đề liên quan