Facebook在iOS9和Swift2中使用Parse登录

时间:2015-10-29 19:38:21

标签: ios parse-platform swift2 facebook-ios-sdk

我正试图在iOS9中使用Parse登录,但该应用程序在真实设备中继续打开Safari而非Facebook应用程序。甚至在Safari中,当我尝试使用键盘输入Facebook帐户的电子邮件和密码时,页面重新加载,因此无法登录并向应用程序授予权限。用户应首先在Facebook中打开safari并登录,然后打开我的应用程序,然后授予权限。我认为这不是最好的用户体验,因为用户已经有了一个Facebook应用程序。

我已按照我在此列出的所有步骤进行操作:

  1. 添加Fraleworks

    enter image description here

  2. 链接二进制文件

  3. enter image description here

    1. Updaded info.plist

       import UIKit
       import Parse
       import FBSDKCoreKit
       import ParseFacebookUtilsV4
      
       @UIApplicationMain
       class AppDelegate: UIResponder, UIApplicationDelegate {
      
      var window: UIWindow?
      
      func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
          Parse.setApplicationId("appID", clientKey: "MyKey")
          PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)   
          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)
      }
      
      func applicationDidBecomeActive(application: UIApplication) { 
          FBSDKAppEvents.activateApp()
      }
      
      1. App Delegate

        @IBAction func loginButtonClicked(sender: AnyObject) {
        
        if let _ = FBSDKAccessToken.currentAccessToken() {
        
           print("connected already")
        
        } else {
        
            PFFacebookUtils.logInInBackgroundWithReadPermissions(["public_profile", "email", "user_friends", "user_birthday" , "user_education_history","user_photos"]) {
                (user: PFUser?, error: NSError?) -> Void in
                if let user = user {
                    if user.isNew {
                        print("User signed up and logged in through Facebook!")
                    } else {
                        print("User logged in through Facebook!")  
                    }
                } else {
                    print("Uh oh. The user cancelled the Facebook login.")
                }
            }
        }
        

        }

    2. 登录代码:

      {{1}}

      }

1 个答案:

答案 0 :(得分:1)

使用webview来记录用户现在是Facebook SDK for iOS 9的默认行为,根据Facebook团队的说法,这种方法可以提供更好的用户体验,因为它可以避免在应用程序转换之间显示其他对话。

  

在使用最新SDK(v4.6和v3.24)的应用中,我们将展示一个   使用Safari View Controller(SVC)代替快速应用程序切换   (FAS)因为添加额外步骤的其他对话框插页式广告   到iOS 9上FAS的登录过程。另外,我们的数据   从超过250个应用程序中看到这表明这是最好的体验   对于长远来看的人

Read more on Facebook