1

Parse (1.7.1) SDK と Facebook (v4) SDK の両方を正常に設定し、ブリッジ ヘッダー ファイルと AppDelegate.swift を設定しました。現在、ViewController で Facebook ログインを作成しようとしています。「Parse iOS Documentation - Facebook SignUp & Login」に記載されているコードを使用しようとしています。

  PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, {
     (user: PFUser!, error: NSError!) -> Void in
       if let user = user {
        if user.isNew {
           println("User signed up and logged in through Facebook!")
        } else {
           println("User logged in through Facebook!")
        }
       } else {
         println("Uh oh. The user cancelled the Facebook login.")
        }
    }) 

ただし、ViewController.swift > ViewDidLoad に貼り付けると、次のエラーが表示されます。

- Extra argument in call      // for { at the first line

誰でもこれを整理するのを手伝ってもらえますか?

編集: 与えられたスクリプトは、構文に関してはうまくいきましたが、今では「うーん、ユーザーが Facebook のログインをキャンセルしました」というメッセージが表示され続けます。許可を求める前であっても。Facebookページがまだロードされている間..そして、私が試みているユーザーは、この特定のアプリに対してすでに受け入れられています。見てみましょう: http://imgur.com/5yDs1s1

4

3 に答える 3

2

ViewDidLoad に次のコードを追加することで回避策を見つけました。

   if PFUser.currentUser() != nil {

        self.performSegueWithIdentifier("loginSegue", sender: self)

    }

ボタンに配置するように一緒に:

   @IBAction func Facebook(sender: AnyObject) {

    var permissions = ["public_profile"]

    PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) { (user: PFUser?, error: NSError?) -> Void in
        if let user = user {
            if user.isNew {
                println("User signed up and logged in through Facebook!")

                self.facebookButton.alpha = 0



                self.performSegueWithIdentifier("signUp", sender: self)

            } else {

               println("User logged in through Facebook!")

                self.facebookButton.alpha = 0

                 let currentUser = PFUser.currentUser()

                self.performSegueWithIdentifier("loginSegue", sender: self)

            }

        } else {

            println("Uh oh. The user cancelled the Facebook login.")

            println("User cancelled")

        }


    }

また、App Delegate で:

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    Parse.setApplicationId("###",
        clientKey: "###")

    PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)

    PFUser.enableRevocableSessionInBackground()


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

ブリッジング ヘッダー:

  #import <FBSDKCoreKit/FBSDKCoreKit.h>
  #import <ParseFacebookUtilsV4/PFFacebookUtils.h>
  #import <Parse/Parse.h>
  #import <Bolts/Bolts.h>
  #import <FBSDKLoginKit/FBSDKLoginKit.h>

それがどこまで真実かはわかりませんが、それは私の問題を解決しました

于 2015-05-06T16:16:25.247 に答える
0

同じ問題が発生しましたが、コードを次のように変更すると、コードが機能しました。

PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) { (user: PFUser?, error: NSError?) -> Void in
于 2015-04-14T21:52:49.640 に答える