gpt4 book ai didi

ios - 从 Objective-C 到 swift 的 FBSDKLoginManager 代码

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:42 25 4
gpt4 key购买 nike

任何人请帮助我如何将 FBSDKLoginManager 代码转换为快速编程在此提前感谢我在 Objective-C 中附上代码

- (IBAction)btnFacebookPressed:(id)sender {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
login.loginBehavior = FBSDKLoginBehaviorBrowser;
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error)
{
// Process error
}
else if (result.isCancelled)
{
// Handle cancellations
}
else
{
if ([result.grantedPermissions containsObject:@"email"])
{
NSLog(@"result is:%@",result);
[self fetchUserInfo];
[login logOut]; // Only If you don't want to save the session for current app
}
}
}];
}

我的 View Controller 代码是:

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

let facebookReadPermissions = ["public_profile", "email", "user_friends"]


override func viewDidLoad() {
super.viewDidLoad()
self.performSegueWithIdentifier("showView", sender: self)
/*for view in self.fbLoginView.subviews as! [UIView]
{
if view.isKindOfClass(UIButton)
{
let customButton = view as! UIButton
//customButton.removeFromSuperview()

customButton.setTitle("LOGIN WITH FACEBOOK", forState: .Normal)
customButton.backgroundColor = UIColor(red: 72/255.0, green: 128/255.0, blue: 255/255.0, alpha: 1.0)
customButton.showsTouchWhenHighlighted = true
customButton.frame = CGRectMake(90, 15, 210, 16)
customButton.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Center
//customButton.willMoveToSuperview(fbLoginView)

}
if (view.isKindOfClass(UILabel))
{
var loginLabel = view as! UILabel;
loginLabel.text = "LOGIN WITH FACEBOOK"
//loginLabel.textColor = UIColor.blackColor()
//loginLabel.textAlignment = NSTextAlignment(rawValue : 50)
//loginLabel.frame = CGRectMake(50, 50, 265, 45)
loginLabel.removeFromSuperview()
}
}*/

}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{

if (segue.identifier == "showView")
{

var vc: ViewController1 = segue.destinationViewController as! ViewController1

}
}
// Facebook Delegate Methods

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
println("User Logged In")

if ((error) != nil)
{
// Process error
println(error.localizedDescription)
}
else if result.isCancelled {
// Handle cancellations
}
else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
println("Login complete.")

/*if result.grantedPermissions.contains("email")
{
// Do work
//self.performSegueWithIdentifier("showView", sender: self)
}*/
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
println("User Logged Out")
}

/*func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
println("fetched user: \(result)")
let userName : NSString = result.valueForKey("name") as! NSString
println("User Name is: \(userName)")
let userEmail : NSString = result.valueForKey("email") as! NSString
println("User Email is: \(userEmail)")
}
})
}

*/

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


@IBAction func customButton(sender: AnyObject) {
var fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Browser

fbLoginManager.logInWithReadPermissions(self.facebookReadPermissions, handler: { (result, error) -> Void in

if (error == nil){
var fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
self.fetchUserInfo()
fbLoginManager.logOut()
}
}
})
}
func fetchUserInfo(){
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)
result.valueForKey("email") as! String
result.valueForKey("id") as! String
result.valueForKey("name") as! String
result.valueForKey("first_name") as! String
result.valueForKey("last_name") as! String
}
})
}
}
}

当我运行我的应用程序时。自定义按钮根本不起作用,事件没有发生

最佳答案

这是你的代码的快速版本

 @IBAction func btnFBLoginPressed(sender: AnyObject) {
var fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
//fbLoginManager.loginBehavior = FBSDKLoginBehavior.Browser

fbLoginManager.logInWithReadPermissions(["email"], handler: { (result, error) -> Void in

if (error == nil){
var fbloginresult : FBSDKLoginManagerLoginResult = result

if(fbloginresult.isCancelled) {
//Show Cancel alert
} else if(fbloginresult.grantedPermissions.contains("email")) {
self.returnUserData()
//fbLoginManager.logOut()
}
}
})
}

更新

func returnUserData(){
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)
result.valueForKey("email") as! String
result.valueForKey("id") as! String
result.valueForKey("name") as! String
result.valueForKey("first_name") as! String
result.valueForKey("last_name") as! String
}
})
}
}

关于ios - 从 Objective-C 到 swift 的 FBSDKLoginManager 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32048964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com