我正在为我的 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/