swift 3 facebook整合

swift 3 facebook整合

问题描述:

试图让Facebook连接工作从一个迅速的项目。swift 3 facebook整合

一直试图沿着以下YouTube视频如下:https://www.youtube.com/watch?v=I6rTmfLp9aY

不幸,我是在德国。

所以这是我到目前为止有:

  1. 我有我的IOS的Facebook应用程序启用启用和我种我的bundleID那里。

  2. 下载最新的iOS框架,并添加到项目

到AppDelegate的文件,我说:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    FBSDKApplicationDelegate.sharedInstance() 
    return true 
} 

func applicationDidBecomeActive(_ application: UIApplication) { 
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
    FBSDKAppEvents.activateApp() 
} 

这就是视图控制器文件

import UIKit 
import FBSDKCoreKit 
import FBSDKLoginKit 
import FBSDKShareKit 




class ViewController: UIViewController, FBSDKAppInviteDialogDelegate, FBSDKLoginButtonDelegate{ 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

       if (FBSDKAccessToken.current() != nil) 
     { 
      let content = FBSDKAppInviteContent() 
      content.appLinkURL = NSURL(string: "{Facebook link to app}") as URL! 
      FBSDKAppInviteDialog.show(from: self, with: content, delegate: self) 
     } 
     else 
     { 
      let loginView : FBSDKLoginButton = FBSDKLoginButton() 
      self.view.addSubview(loginView) 
      loginView.center = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY + 100) 
      loginView.readPermissions = ["public_profile", "email"] 
     } 


} 

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




func appInviteDialog (_ appInviteDialog: FBSDKAppInviteDialog!, didCompleteWithResults results: [AnyHashable : Any]!) 
{ 

} 


func appInviteDialog (_ appInviteDialog: FBSDKAppInviteDialog!, didFailWithError error: Error!) { 
    print("Error took place in appInviteDialog \(error)") 
} 


func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 

    if ((error) != nil) 
    { 
     //process error 
    } 
    else if result.isCancelled { 
     //handle cancelation 
    } 
    else { 

     let content = FBSDKAppInviteContent() 
     content.appLinkURL = NSURL(string: "{Facebook link to app}") as URL! 
     FBSDKAppInviteDialog.show(from: self, with: content, delegate: self) 

     if result.grantedPermissions.contains("email") 
     { 
      //do work 
     } 
    } 
} 

func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 

} 


} 

没有错误,没有警报。当我运行模拟器时,我得到一个空的屏幕。必须做一些正确的事情,因为我得到了以下信息:

SystemGroup/systemgroup.com.apple.configurationprofiles 2017年6月4日00:42:02.351876 + 0300 facebook_login [4569:144075] [MC]从私人阅读有效的用户设置。

也是,如果我只是在viewDidLoad中粘贴在以下几行代码:

  let loginView : FBSDKLoginButton = FBSDKLoginButton() 
      self.view.addSubview(loginView) 
      loginView.center = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY + 100) 
      loginView.readPermissions = ["public_profile", "email"] 

我在模拟器得到一个漂亮的Facebook按钮当然死机当我按下它。

任何帮助的工作将是极大的赞赏

Facebook拥有迅捷的SDK您可能会发现更容易比Objective-C的一个(它们只是调用的iOS)使用。尝试在这里寻找文档各地:

https://developers.facebook.com/docs/swift

而且,遵循(其他)的iOS SDK中描述的步骤开始:

https://developers.facebook.com/docs/ios/getting-started/

这是最小的应用程序委托我可以开始工作(注意,斯威夫特SDK缺少存在于iOS的SDK中的FB前缀):

import UIKit 
import FacebookCore 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
     SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) 
     return true 
    } 

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
     return SDKApplicationDelegate.shared.application(app, open: url, options: options) 
    } 

} 

而且是务必在您的Info.plist中添加所有必需的密钥,否则您将无法获得身份验证。

+0

我知道Facebook的swift sdk不支持当前的swift和Xcode –

+0

我正在使用Xcode和Swift的最新版本,仅仅是建立框架的一些小警告。无论如何,他们没有那么不同,我敢肯定,如果你更喜欢其他SDK,你可以用它们完成同样的事情。只要确保遵循文档中的所有步骤。注意App Delegate和Info.plist。代码现在可以使用 –

+0

。我忘记了更新Info.plist。谢谢 –