私は小さなプロジェクトに取り組んでおり、Facebook/Google を使用してサインイン/ログインする必要があります。これまでのところ、Google の Firebase Auth と完全に連携しています。
私は基本的にFacebookで作業しているので、すべての機能は問題ありません。
ここで、少し「スタイリング」して、カスタマイズされた外観にしたいと思います。私はそれを実現できないようです。
動き回ったり、形状を変更したり、基本的にすべてを制御したりできる UIButton を作成しました。UIButton をネイティブの Facebook LoginButton とまったく同じにしたいと思います。
私はFacebook自身のドキュメントに行きました。私はすべてを試しました。彼らが書いたコードをコピーして貼り付けたところ、複数のエラーが発生しました。見つけたすべてのチュートリアルを試しましたが、何も役に立ちませんでした。1 つのチュートリアルで少しは理解できましたが、うまくいきませんでした。コピーした Facebook のコード: https://developers.facebook.com/docs/swift/login
事前にどうもありがとう、誰かが私を助けてくれることを願っています。
それが役立つ場合、これが私のコードです:
import UIKit
import FacebookLogin
import FacebookCore
import FBSDKLoginKit
import FBSDKCoreKit
import FirebaseAuth
class ViewController: UIViewController, FBSDKLoginButtonDelegate {
let loginButton: FBSDKLoginButton = FBSDKLoginButton()
@IBOutlet weak var SpinnerLogin: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
loginButton.isHidden = true
FIRAuth.auth()?.addStateDidChangeListener { auth, user in
if let user = user {
// User is signed in.
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "HomeView")
self.present(homeViewController, animated: true, completion: nil)
} else {
// No user is signed in.
self.loginButton.readPermissions = ["public_profile", "email", "user_friends" ]
self.loginButton.center = self.view.center
self.loginButton.delegate = self
self.view.addSubview(self.loginButton)
self.loginButton.isHidden = false
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//Tells us if person is logged in
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
self.loginButton.isHidden = true
if (error != nil) {
//Handle error
self.loginButton.isHidden = false
}
else if (result.isCancelled) {
//Handle cancel event
self.loginButton.isHidden = false
}
else {
SpinnerLogin.startAnimating()
let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
FIRAuth.auth()?.signIn(with: credential) { (user, error) in
print("User Logged in to Facebook")
print("You are now signed in to Firebase")
}
}
}
//Tells us if person logged out
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("User did log out")
}
}