ios - Facebook 和谷歌使用 Swift 登录

标签 ios swift facebook google-signin

我在屏幕上有两个用于 Google 和 Facebook 的自定义登录按钮。这是我用 AppDelegate 编写的代码,它导致了我将在代码之后解释的问题

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
        FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)



        return true
    }
     func application(application: UIApplication,
        openURL url: NSURL, options: [String: AnyObject]) -> Bool {
            if #available(iOS 9.0, *) {
                return GIDSignIn.sharedInstance().handleURL(url,
                    sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
                    annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
            } else {
                // Fallback on earlier versions
            }

            return true
    }

如果我编写此代码,则在单击此处的“确定”按钮后:

enter image description here

屏幕不会关闭并停留在那里。但是如果我们点击“允许”按钮,谷歌屏幕会完美运行。但是如果我只使用这段代码:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
            FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)



            return true
        }

然后删除其他功能,然后 Facebook 的“确定”按钮就可以正常工作了。为什么我添加此功能后 Facebook 不起作用?

func application(application: UIApplication,
            openURL url: NSURL, options: [String: AnyObject]) -> Bool {
                if #available(iOS 9.0, *) {
                    return GIDSignIn.sharedInstance().handleURL(url,
                        sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
                        annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
                } else {
                    // Fallback on earlier versions
                }

                return true
        }

最佳答案

这个解决方案适合我

func application(application: UIApplication,
    openURL url: NSURL, options: [String: AnyObject]) -> Bool {

        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: nil)  ||
            GIDSignIn.sharedInstance().handleURL(url,
            sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
            annotation: options[UIApplicationOpenURLOptionsAnnotationKey] as? String)
}

iOS Facebook and Google login at the same time?

关于ios - Facebook 和谷歌使用 Swift 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836819/

相关文章:

ios - CLLocationManager 始终返回速度 : -1

ios - NSSortDescriptor NSDate 升序。如何对具有相同日期的对象进行排序?

python - Facebook 抓取权限申请表?

javascript - Facebook 没有 JS?

ios - "Renders with edge antialiasing"导致 iOS 7 中的 UIAlertView 延迟

ios - 无法将类型 'PFObject' 的值转换为 'NSArray'

iOS GCM 通知发送,但不显示

facebook - 是否可以检查电子邮件是否在 Facebook 上得到确认?

android - 响应式 Bootstrap 问题

ios - 向上滚动时动态显示文本从服务器获取数据