我正试图在iOS9中使用Parse登录,但该应用程序在真实设备中继续打开Safari而非Facebook应用程序。甚至在Safari中,当我尝试使用键盘输入Facebook帐户的电子邮件和密码时,页面重新加载,因此无法登录并向应用程序授予权限。用户应首先在Facebook中打开safari并登录,然后打开我的应用程序,然后授予权限。我认为这不是最好的用户体验,因为用户已经有了一个Facebook应用程序。
我已按照我在此列出的所有步骤进行操作:
添加Fraleworks
链接二进制文件
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()
}
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.")
}
}
}
}
登录代码:
{{1}}
}
答案 0 :(得分:1)
使用webview来记录用户现在是Facebook SDK for iOS 9的默认行为,根据Facebook团队的说法,这种方法可以提供更好的用户体验,因为它可以避免在应用程序转换之间显示其他对话。
在使用最新SDK(v4.6和v3.24)的应用中,我们将展示一个 使用Safari View Controller(SVC)代替快速应用程序切换 (FAS)因为添加额外步骤的其他对话框插页式广告 到iOS 9上FAS的登录过程。另外,我们的数据 从超过250个应用程序中看到这表明这是最好的体验 对于长远来看的人