ios - Facebook SDK 设置

标签 ios objective-c facebook swift xcode6

我正在尝试将 Facebook SDK 添加到我的应用中,我已按照每个步骤进行操作。

我遇到的唯一问题是,我需要添加到 AppDelegate 的代码在 Objective C 中,而我使用的是 Swift。我不知道如何将 Objective C 代码转换为 swift,你能帮我吗?

这是代码:

- (void)applicationDidBecomeActive:(UIApplication *)application {
   [FBSDKAppEvents activateApp];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                didFinishLaunchingWithOptions:launchOptions];
}

- (BOOL)application:(UIApplication *)application 
openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                     openURL:url
                                           sourceApplication:sourceApplication
                                                  annotation:annotation];
} 

谢谢!

最佳答案

尝试 Facebook 登录代码:

Appdelegate.swift

import UIKit

import FBSDKCoreKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    func applicationWillResignActive(application: UIApplication) {    
        FBSDKAppEvents.activateApp()
    }
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
    }
}

ViewController.swift

import UIKit
import FBSDKLoginKit

class ViewController: UIViewController {

    var dict : NSDictionary!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func btnFBLoginPressed(sender: AnyObject) {
        var fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
        fbLoginManager .logInWithReadPermissions(["email"], handler: { (result, error) -> Void in
            if (error == nil){
                var fbloginresult : FBSDKLoginManagerLoginResult = result
                if(fbloginresult.grantedPermissions.containsObject("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){
                    self.dict = result as NSDictionary
                    println(result)
                    println(self.dict)
                    NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as String)
                }
            })
        }
    }
}

关于ios - Facebook SDK 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138069/

相关文章:

ios - 为什么标签栏项目的角标(Badge)没有改变

objective-c - setImage:不会导致图像更改

android - facebook 帐户工具包 - 返回错误 "We' 抱歉,出了点问题。”在 android 中

php - Facebook 应用程序开发 : Are there Tutorials, 以架构为中心的截屏视频等

javascript - 从 FB 插件中的数据库链接

ios - 内存地址是否遵循 iOS 中的模式?

ios - 将 NSString 添加到 .plist(属性列表)文件

ios - 如何使用最后一个 CoreData 条目验证今天的日期

objective-c - 带空格的 OSX 目录

iphone - MPMoviePlayerController 在 iOS 5 xcode(带有 Storyboard )中不起作用,但在 iOS 4 中完美运行