我正在尝试在我的应用程序中实现Facebook登录选项.我按照Parse网站和Facebook开发者页面上的所有说明进行操作.我添加了框架,修改了plist文件并添加了正确的代码,但是当我启动App时,我得到了这个异常:
2015-07-14 17:50:08.939 ########[35815:2144465] -[ParseManager coreManager]: unrecognized selector sent to instance 0x7f9cdadad720
2015-07-14 17:50:08.953 ########[35815:2144465] *** Terminating app due to uncaught exception 'NSinvalidargumentexception',reason: '-[ParseManager coreManager]: unrecognized selector sent to instance 0x7f9cdadad720'
*** First throw call stack:
(
0   CoreFoundation                      0x000000010a3cdc65 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x000000010a066bb7 objc_exception_throw + 45
2   CoreFoundation                      0x000000010a3d50ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3   CoreFoundation                      0x000000010a32b13c ___forwarding___ + 988
4   CoreFoundation                      0x000000010a32acd8 _CF_forwarding_prep_0 + 120
5   ########                          0x0000000105c822f0 +[PFFacebookUtils initializefacebookWithApplicationLaunchOptions:] + 151
6   ########                          0x0000000105954c6c -[SMAppDelegate application:didFinishLaunchingWithOptions:] + 1132
7   UIKit                               0x00000001088ef748 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 240
8   UIKit                               0x00000001088f0357 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2540
9   UIKit                               0x00000001088f319e -[UIApplication _runWithMainScene:transitionContext:completion:] + 1349
10  UIKit                               0x00000001088f2095 -[UIApplication workspaceDidEndTransaction:] + 179
11  FrontBoardServices                  0x000000010be2b5e5 __31-[FBSSerialQueue performAsync:]_block_invoke_2 + 21
12  CoreFoundation                      0x000000010a30141c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
13  CoreFoundation                      0x000000010a2f7165 __CFRunLoopdoblocks + 341
14  CoreFoundation                      0x000000010a2f6f25 __CFRunLoopRun + 2389
15  CoreFoundation                      0x000000010a2f6366 CFRunLoopRunSpecific + 470
16  UIKit                               0x00000001088f1b02 -[UIApplication _run] + 413
17  UIKit                               0x00000001088f48c0 UIApplicationMain + 1282
18  ########                          0x00000001059c4a9f main + 111
19  libdyld.dylib                       0x000000010a918145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

这些是我在项目中实际拥有的框架和库:

奇怪的是,如果我从零创建一个新项目,我根本没有问题,登录工作正常.

编辑:我仍在尝试解决这个问题.通过从[PFFacebookUtils initializefacebookWithApplicationLaunchOptions:launchOptions]更改PFFacebookUtils初始化代码,我设法启动了App而没有错误;到[PFFacebookUtils初始化];但是如果我尝试使用代码[PFFacebookUtils logInInBackgroundWithReadPermissions:nil block:^(PFUser * user,NSError * error){}登录按钮,则会出现另一个异常因未捕获的异常’NSInternalInconsistencyException’而终止app,原因:’你必须通过调用initializefacebookWithApplicationLaunchOptions来初始化PFFacebookUtils

我正按照建议添加我正在使用的代码:

在我的AppDelegate.m中

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

// PARSE
[Parse setApplicationId: SMParseApplicationId
              clientKey: SMParseClientId];

// FACEBOOK
[PFFacebookUtils initializefacebookWithApplicationLaunchOptions:launchOptions];


[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
//*****

// GOOGLE MAP API
[GMSServices provideAPIKey: SMGoolgeMapApiKey];
//*****

return [[FBSDKApplicationDelegate sharedInstance] application:application
                                didFinishLaunchingWithOptions:launchOptions];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(Nsstring *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                      openURL:url
                                            sourceApplication:sourceApplication
                                                   annotation:annotation];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
  [FBSDKAppEvents activateApp];
}

解决方法

我经历了同样的斗争,尝试了许多不同的方法来设置Parse与Facebook登录.我不得不说,我没有使用Obj-C的经验,但这是我工作的Swift Parse w / Facebook登录应用程序,我希望能给你一些见解.

在我的AppDelegate.swift中:

func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {

    Parse.setApplicationId("ID",clientKey:"KEY")
    PFFacebookUtils.initializefacebookWithApplicationLaunchOptions(launchOptions)
    FBSDKProfile.enableupdatesOnAccesstokenChange(true)


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


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

在我的LoginViewController.swift中:

//My custom storyboard button
    @IBAction func fbLogin(sender: AnyObject) {

    var permissions = ["public_profile","email"]
    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.facebookSignUp(user)
            } else {
                println("User logged in through Facebook!")
                self.performSegueWithIdentifier("LoginSuccessful",sender: self)
            }
        } else {
            println("Uh oh. The user cancelled the Facebook login.")
        }
    }
}



override func viewDidLoad() {
    super.viewDidLoad()

    if PFUser.currentUser() != nil {
        movetoNextView() //Segue to next ViewController
    }
}


func facebookSignUp(user: PFUser) -> Void{
    var request = FBSDKGraphRequest(graPHPath: "me",parameters: nil)
    var userID:String

    request.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!,result: AnyObject!,error: NSError!) -> Void in
        if error == nil {
            user["fullName"] = result["name"]
            var facebookUserID = result["id"] as! String
            user["facebookUserID"] = facebookUserID

            user.save()
            self.performSegueWithIdentifier("LoginSuccessful",sender: self)

        } else {
            println(error)
            PFUser.logout()
        }

    }

}

ios – Facebook登录集成到Parse.com App的更多相关文章

  1. openURL崩溃:iOS 9中可能存在Facebook SDK错误

    也许Facebook的SDK在这个特例上有错误?解决方法我找到了答案看起来它只是一个发布模式问题.通过启用Xcode运行发布版本,我能够调试我的问题.它是由参数sourceApplication引起的,在发布模式下显然需要解包.不知道为什么,但至少我得到它的工作.

  2. ios – Facebook应用程序邀请对话框无效

    任何该功能的工作示例都将非常感激.解决方法您的代码很好,当您发布应用程序时,此功能将实际工作,因为某些Facebook集成需要在使用前获得批准.在状态和审核部分提交您的应用以获得批准

  3. 检测是否在iOS / Android上的本机Facebook应用程序中加载了网页

    然后我的链接可以启动浏览器,我的网络应用程序继续在Facebook本机应用程序中运行.解决方法这在JavaScript中适用于我:

  4. ios – 检查用户是否已修改Facebook的App权限

    我正在使用Facebook创建新用户或登录Parse.>用户使用Facebook登录登录应用程序>用户提示接受权限.>用户接受应用程序请求的所有权限.4.用户删除了应用程序的权限我想知道我们检查用户是否已更改Facebook中应用程序的授权状态的方式是什么.我该如何检查?我们怎么知道它不再连接?

  5. ios Facebook登录:com.facebook.sdk:ErrorLoginFailedReason = invalid_client

    我用我的iosApp测试了我的FB应用已经有一段时间了,只使用沙盒应用和我的管理员帐户;它工作得很好.现在,我已经在我的fb应用程序中禁用了沙箱模式,让我的一些FB朋友测试应用程序.每当他们尝试从iPhone应用程序连接时,他们会得到以下显示:“myApp错误配置Facebook登录”并且错误是:com.facebook.sdk:ErrorLoginFailedReason=invalid_cli

  6. 如何在iOS和FB SDK 3.7上处理过期的Facebook访问令牌

    解决方法我这样做,FB自动重新创建会话.如果FB已更改使用条款或其他内容,则会向用户显示登录对话框.

  7. iOS网页/原生应用Facebook登录弹出 – 失败?

    如果我重新启动app/web-app,用户将自动登录,并重定向到成功页面.我认为是导致问题的原因当您在Firefox/Chrome/Safari浏览器中运行网页时,Facebook登录对话框会弹出一个弹出窗口或另一个选项卡.我相信这是这个弹出页面的一个问题,以及当成功登录时Javascript如何与自身通信.window.close的东西没有返回的根页面…失败的解决方法由于应用程序挂在前面提到的URL上,我决定在shouldStartLoadWithRequest(…)中添加if语句以强制UIWebvie

  8. ios – 使用未解析的标识符FBSDKAppEventNamePurchased

    我正在尝试使用FacebookAnalyticsSDK在我的iOS应用程序中记录一些事件.首先,我记录了一个事件,这很有效:FBSDKAppEvents.logEvent(FBSDKAppEventNameInitiatedCheckout,valuetoSum:price,parameters:parameters)然后我尝试记录下一个:FBSDKAppEvents.logEvent(FBSDK

  9. 如何使用iOS Facebook SDK 2.4保持登录状态

    我正在使用FBSDKLoginManager在我的应用程序中实现Facebook登录.Facebookdocs似乎暗示这会为后续应用程序启动保存令牌,以便用户不必每次都登录:TheFBSDKLoginManagersetsthistokenforyouandwhenitsetscurrentAccesstokenitalsoautomaticallywritesittoakeychaincache

  10. 在iOS(Facebook和Instagram)中处理不同的URL方案

    我甚至不确定如何定义问题,但在这里它.我有一个使用FacebookSDK进行用户登录的应用程序.我按照Facebook授权教程.我不是100%确定它是如何工作的但是我的“AppDelegate.m”中的这一部分似乎很重要.到现在为止还挺好.现在我想为instagram实现类似的登录,以便用户可以访问他们的照片.我运行这个例子没有问题(https://github.com/crino/instagr

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部