2015-11-02 10 views
5

XCode 7.1プロジェクトにiOS 9.1の最新のFacebook SDKを追加しました。残念ながら私が知っているのはスイフトで、ではない。Objective CFacebook's developer site documentationのドキュメントはのObjective Cに限られています。過去6ヶ月間に物事が大きく変わったため、Googleで検索するたびに古い文書が表示されます。だから、私は失礼だ。Swift 2.0とiOS 9.1を使用してFacebookのログインを行うにはどうしたらいいですか?

私はplistファイルですべての簡単なことをやった。

私は使用することができた:

import FBSDKCoreKit 
import FBSDKLoginKit 

私も追加:

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

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

を私AppDelegate.swiftファイルに。これはすべて動作し、正常に構築されます。明らかに、正しいフレームワークも追加されています。私はログインボタンを追加するための構文を知らないので、この時点を超えて私は停止しています。ユーザーのアカウントなどに格納するために使用できるトークンやその他のプロファイル情報でjson文字列が返されると想定します。

答えて

8

あなたは正しい道を歩いています。あなたがつもりだ

Have you set up your pList yet?

は、あなたのVCに追加するログインボタンを追加し、デリゲートに対処して、FBの情報に対処する必要があります。 (ただし、厳密に)このような何か:

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%を取得する必要があります。

私はさまざまな権限(ユーザーの年齢、興味など)を追加しましたが、あなた自身で設定する必要があります。正直なところ、この部分(ハード部分)はオブジェクトCの部分と非常によく似ています。ちょうどそれが働いているプロジェクトをいくつかダウンロードし、あなたの想像に合ったものにそれらを一緒に解析しようとします。

すべての機能を有効にするのは難しいかもしれませんが、それをやり続けてください!

+2

これは動作します!私はおそらく残りを把握するでしょう。ありがとう! –

+1

これはすばらしいことです。returnUserData()ビットは本当に役立ちます。その部分に余分なマイルを行ってくれてありがとう。それは私の日を本当に簡単にしました。 –

+0

Ahha問題ありません。これをすべて理解することは、私にとっては純粋な地獄でした。私は誰かの涙/血を救うと思った。 – MQLN

4

カスタムボタンのクリック時にFacebookのからのログインを実行したい場合、これが役立ちます:

@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")を次のように設定した場合、ファーストネーム を印刷するには?文字列{ print( "ファーストネーム:\(ファーストネーム)") } –

関連する問題