swift 3 facebook整合
试图让Facebook连接工作从一个迅速的项目。swift 3 facebook整合
一直试图沿着以下YouTube视频如下:https://www.youtube.com/watch?v=I6rTmfLp9aY
不幸,我是在德国。
所以这是我到目前为止有:
我有我的IOS的Facebook应用程序启用启用和我种我的bundleID那里。
下载最新的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
中添加所有必需的密钥,否则您将无法获得身份验证。
我知道Facebook的swift sdk不支持当前的swift和Xcode –
我正在使用Xcode和Swift的最新版本,仅仅是建立框架的一些小警告。无论如何,他们没有那么不同,我敢肯定,如果你更喜欢其他SDK,你可以用它们完成同样的事情。只要确保遵循文档中的所有步骤。注意App Delegate和Info.plist。代码现在可以使用 –
。我忘记了更新Info.plist。谢谢 –