草庐IT

ios - Firebase 授权谷歌 + Facebook = 崩溃

coder 2023-09-27 原文

我已经在我的应用程序的 iOS 版本中成功实现了 Google Sign(Android 版本中的 Google + Twitter + Facebook 也可以正常工作)。现在我正在尝试添加 FB 登录,但它似乎与 Google 登录有冲突。当我在 WebView 中看到成功的 FB 登录屏幕并按确定后 - 应用程序崩溃。

Error Domain=com.google.GIDSignIn Code=-4 "(null)"
2016-09-01 18:51:55.745 APP_NAME[4574:] <FIRAnalytics/INFO> Firebase Analytics enabled
2016-09-01 18:52:10.039 APP_NAME[4574:3352620] -canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
2016-09-01 18:52:10.075 APP_NAME[4574:3352620] -canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
(lldb) bt
* thread #1: tid = 0x33282c, 0x014dbd54 libswiftCore.dylib`swift::_swift_getClass(void const*), queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x014dbd54 libswiftCore.dylib`swift::_swift_getClass(void const*)
    frame #1: 0x014d2e62 libswiftCore.dylib`swift_getObjectType + 8
    frame #2: 0x0013dba0 APP_NAME`@objc AppDelegate.application(UIApplication, open : URL, sourceApplication : String?, annotation : Any) -> Bool + 328 at AppDelegate.swift:0
    frame #3: 0x001e8046 APP_NAME`-[FIRAAppDelegateProxy application:openURL:sourceApplication:annotation:] + 150
    frame #4: 0x258f214a UIKit`__45-[UIApplication _applicationOpenURL:payload:]_block_invoke + 906
    frame #5: 0x258f1c1a UIKit`-[UIApplication _applicationOpenURL:payload:] + 546
    frame #6: 0x258f9e8a UIKit`-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:] + 3658
    frame #7: 0x258fe986 UIKit`__88-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:]_block_invoke + 174
    frame #8: 0x258fe898 UIKit`-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:] + 396
    frame #9: 0x258ea472 UIKit`__70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 134
    frame #10: 0x258ea160 UIKit`-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 644
    frame #11: 0x2271cc28 FrontBoardServices`__80-[FBSSceneImpl updater:didUpdateSettings:withDiff:transitionContext:completion:]_block_invoke_2 + 40
    frame #12: 0x22737bf6 FrontBoardServices`__FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 18
    frame #13: 0x22737aa6 FrontBoardServices`-[FBSSerialQueue _performNext] + 226
    frame #14: 0x22737da4 FrontBoardServices`-[FBSSerialQueue _performNextFromRunLoopSource] + 44
    frame #15: 0x2102b9e6 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
    frame #16: 0x2102b5d6 CoreFoundation`__CFRunLoopDoSources0 + 454
    frame #17: 0x2102993e CoreFoundation`__CFRunLoopRun + 806
    frame #18: 0x20f781c8 CoreFoundation`CFRunLoopRunSpecific + 516
    frame #19: 0x20f77fbc CoreFoundation`CFRunLoopRunInMode + 108
    frame #20: 0x22594af8 GraphicsServices`GSEventRunModal + 160
    frame #21: 0x256b1434 UIKit`UIApplicationMain + 144
  * frame #22: 0x001439a0 APP_NAME`main + 172 at AppDelegate.swift:12
    frame #23: 0x20c24872 libdyld.dylib`start + 2 

来自 AppDelegate 的代码

@available(iOS 9.0, *)
    func application(_ application: UIApplication,
                     open url: URL, options: [String: Any]) -> Bool {
        print(url)
        print(options)
        return GIDSignIn.sharedInstance().handle(url as URL!,
                                                     sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication.rawValue] as? String,
                                                     annotation: options[UIApplicationOpenURLOptionsKey.annotation.rawValue])
                || FBSDKApplicationDelegate.sharedInstance().application(application, open: url,
                                                                         sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication.rawValue] as? String,
                                                                         annotation: options[UIApplicationOpenURLOptionsKey.annotation.rawValue])
    }

    func application(_ application: UIApplication,
                     open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: sourceApplication!, annotation: annotation)
                || FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
    }

最佳答案

问题是由 Apple 的“创新”引起的。对于 Xcode 8 beta 6,我必须使用

@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

关于ios - Firebase 授权谷歌 + Facebook = 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39276408/

有关ios - Firebase 授权谷歌 + Facebook = 崩溃的更多相关文章

  1. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  5. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  6. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  7. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  9. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  10. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

随机推荐