ios - 在使用 google 登录和 facebook 登录我的 ios 应用程序时 - 如何将两种 viewDidLoad() 方法的代码合并为一个?

标签 ios swift facebook facebook-graph-api google-signin

我正在为我的 iOS 应用程序实现 google 登录和 facebook 登录。

在我的 viewController.swift 中,我有一个名为 viewDidLoad() 的方法,目前 - 没有 facebook - 我有以下代码:

class ViewController: UIViewController, GIDSignInUIDelegate {

override func viewDidLoad() {
    super.viewDidLoad() 
    GIDSignIn.sharedInstance().uiDelegate = self
    GIDSignIn.sharedInstance().signInSilently()
    print("signed in automatically")
}

}

这行得通,所有与签名(使用 google)的逻辑都发生在 appDelegate 中,所以在这里我们只检查是否可以静默登录。

但是现在我正在关注关于在 ios 上使用 swift 登录的 facebook 教程,作者说修改 viewDidLoad() 方法如下:

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

override func viewDidLoad() {
    super.viewDidLoad()

if (FBSDKAccessToken.currentAccessToken() == nil)
{
    print("Not logged in")
}
else
{
    print("logged in")
}

var loginButton = FBSDKLoginButton()
loginButton.readPermissions = ["public_profile", "email"]
loginButton.delegate = self

}

}

现在我的问题是 - 如何将这两种方法合并在一起,以便它在两种情况下都有效(当用户使用 google 或当他使用 facebook 时)?

谢谢。

最佳答案

1) 这是对 Facebook 实现的逐行描述

if (FBSDKAccessToken.currentAccessToken() == nil)
{
    print("Not logged in")
}
else
{
    print("logged in")
}

此条件仅检查是否存在访问 token 并打印它,如果您已经登录 FBSDKAccessToken.currentAccessToken() 返回访问 token ,否则它将返回 nil

2)var loginButton = FBSDKLoginButton()

此行启动 Facebook 登录按钮实例

3)loginButton.readPermissions = ["public_profile", "email"]

设置访问数据的权限

4)loginButton.delegate = self

将 facebook 委托(delegate)设置为自己

结论 - 这些代码行仅完成了初始设置。因此它不会与 google 委托(delegate)调用混淆。

解决方案 - 您可以采用两种不同的方法进行 facebook 和 google 设置。然后从 ViewDidLoad 调用它们。

关于ios - 在使用 google 登录和 facebook 登录我的 ios 应用程序时 - 如何将两种 viewDidLoad() 方法的代码合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488412/

相关文章:

ios - 苹果健康 : export health data automatically

ios - Xcode 6 + 具有多个 View 的 Storyboard + 处理键盘事件

javascript - Meteor.loginWithFacebook 不存储电子邮件地址

android - iOS\Android Facebook SDK - 获取好友列表,有些没有用户名

iphone - 来自 Facebook 页面的事件的 RSS 格式

ios - 从我的应用程序打开优步,在不使用 sdk 的情况下预先填充上车和下车位置

ios 8/swift 标签栏多点点击图标小我怎么办?

ios - AppDelegate didFinishLaunchingWithOptions launchOptions - 以 NSException Swift 3.0 类型的未捕获异常终止

swift - 如何为 Widget 配置动态值设置 TableView 样式?

swift 泛型没有强制展开沮丧