sen*_*nty 7 facebook ios swift
按照本教程,我设法使Facebook登录按钮工作.但是,它会自动从SDK中分配按钮图像,并且无法自定义(因为它没有在Storyboard上创建),因此我无法使用自己的按钮图像或文本.
我相信这部分代码(在ViewDidLoad中)是分配按钮:
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile", "email"]
loginView.delegate = self
Run Code Online (Sandbox Code Playgroud)
我需要做的是在Storyboard上创建一个@IBOutlet按钮并从那里进行自定义.我怎样才能做到这一点?
Dha*_*iya 35
使用自定义按钮和访问令牌登录.
在facebook sdk 4.x中获取用户信息
@IBAction func btnFBLoginPressed(sender: AnyObject) {
var fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler: { (result, error) -> Void in
if (error == nil){
var fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
fbLoginManager.logOut()
}
}
})
}
func getFBUserData(){
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
println(result)
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
使用上一个Facebook SDK(2016年5月1日)和Swift 2.1更新了答案
使用Interface Builder或代码创建UIButton,并将该按钮的操作链接到:
@IBAction func loginFacebookAction(sender: AnyObject) {
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self) { (result, error) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
上一个代码的幸福案例触发函数self.getFBUserData(),因此您必须在同一个文件中实现该函数
func getFBUserData(){
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
//everything works print the user data
print(result)
}
})
}
}
Run Code Online (Sandbox Code Playgroud)