1、 登录
注册Facebook开发者账号,登录Facebook开发者平台
https://www.facebook.com/login/
2、 创建应用
https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events官网链接
(1)、在App Dashboard界面,点击“My Apps”, 然后创建一个新应用程序(如果您还没有的话)。然后点击左侧的“Settings(设置)” >“基本(Basic)”以查看具有您的App ID,您的App Secret和有关您的应用程序的其他详细信息的“应用程序详细信息面板” 。
(2)、向下滚动到页面底部,然后点击添加平台。选择iOS,添加您的应用程序详细信息,然后保存更改。
通过添加以下详细信息来设置广告应用程序:
应用程序域(App Domains )-提供您的应用程序的Apple App Store URL。
隐私权政策网址(Privacy Policy URL)-提供隐私权政策网址。必须公开您的应用。
服务条款URL(Terms of Service URL)-提供服务条款URL。
平台(Platform )-滚动到“设置”面板的底部以添加iOS平台。
3、 设置Xcode开发环境
使用 Cocoapod
1、将下列代码添加到 Podfile 中:
pod 'FBSDKLoginKit'
2、在终端窗口的项目根目录中运行以下命令:
$ pod install
4、 配置应用
1、添加Bundle Identifier
2、启用单一登录
5、 配置项目
配置 Info.plist 文件。
右键点击 Info.plist,然后选择Open As(打开方式)▸ Source Code(源代码)或者文本。
将下列 XML 代码片段复制并粘贴到文件正文中 (<dict>...</dict>)。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb[APP_ID]</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
在 [CFBundleURLSchemes] 键内的 <array><string> 中,将[APP_ID]替换为应用编号。
在 FacebookAppID 键内的 <string> 中,将[APP_ID]替换为应用编号。
在 FacebookDisplayName 键内的 <string> 中,将[APP_NAME]替换为应用名称。
如要使用任何 Facebook 对话框(如登录、分享、应用邀请等)以将您的应用切换至 Facebook 应用,您应用程序的 Info.plist 中还需包含:<dict>...</dict>。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
若是多个应用使用同一Facebook应用编号
(1)、添加网址格式后缀(URL Scheme Suffix)
(2)、在添加的两个后缀的应用的.plist添加参数FacebookUrlSchemeSuffix
(3)、修改.plist 文件的URL types 下的Facebook里 URL Schemes
6、 配置App Delegate and Scene Delegate
在 AppDelegate 方法中添加以下代码。此代码会在启动应用时初始化 SDK,并在您执行登录或分享操作时,允许 SDK 处理原生 Facebook 应用产生的结果。
Swift
// AppDelegate.swift
import UIKit
import FBSDKCoreKit
@UIApplicationMain
class AppDelegate:UIResponder, UIApplicationDelegate {
func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { ApplicationDelegate.shared.application( application, didFinishLaunchingWithOptions: launchOptions )
return true
}
func application( _ app:UIApplication, open url:URL, options: [UIApplication.OpenURLOptionsKey :Any] = [:] ) -> Bool {
ApplicationDelegate.shared.application( app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplication.OpenURLOptionsKey.annotation] )
}
}
Objective C
// AppDelegate.m
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@import FacebookCore;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary *)options { [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options]; return YES;
}
iOS 13 将功能移到了 SceneDelegate 中。如果您使用的是 iOS 13,请将以下方法添加到 SceneDelegate 中,以便登录或分享等功能的操作可按照预期运作(若Xcode中删除了SceneDelegate 可不用配置):
Swift
// SceneDelegate.swift
import FBSDKCoreKit
...
func scene(_ scene:UIScene, openURLContexts URLContexts:Set) {
guard let url = URLContexts.first?.url else { return } ApplicationDelegate.shared.application( UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation] )
}
Objective C
// SceneDelegate.m
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@import FacebookCore;
@interface SceneDelegate ()
@end
@implementation SceneDelegate
- (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts {
UIOpenURLContext *context = URLContexts.allObjects.firstObject; [FBSDKApplicationDelegate.sharedInstance application:UIApplication.sharedApplication openURL: context.URL sourceApplication:context.options.sourceApplication annotation:context.options.annotation];
}
7、 将登录功能添加到代码里
1、 在您的应用中使用 Facebook 登录按钮
将 Facebook 登录功能添加到代码中
要向应用添加具有 Facebook 品牌标识“登录”按钮,请将下列代码片段添加至视图控制器。
// Swift //
// 将下列代码添加到文件的头文件中,例如:在 ViewController.swift 中导入FBSDKLoginKit
// 将下列代码添加到正文类
ViewController:UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let loginButton = FBLoginButton()
loginButton.center = view.center
view.addSubview(loginButton)
}
}
// Objective-C //
// 将下列代码添加到文件的头文件中,例如:在 ViewController.m 中
// 在 #import "ViewController.h" 之后
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
// 将下列代码添加到正文:
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
// Optional: Place the button in the center of your
view. loginButton.center = self.view.center; [self.view addSubview:loginButton];
}
@end
此时,您应该能运行应用并使用 Facebook“登录”按钮登录。
2、 自定义“按钮”登录
使用登录管理工具类 (FBSDKLoginManager) 和自定义按钮 (UIButton)调用“登录”对话框
//Swift
let loginManager = LoginManager()
loginManager.logIn(permissions: ["public_profile"], from: self) { (result, error) in
guard error == nil else { return }
if result?.isCancelled == true {
return GoosPKHUD.shared().showInfoMessage(message: "用户取消了登录".localized)
}
// Objective-C //
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
logInWithReadPermissions: @[@"public_profile"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Process error");
} else if (result.isCancelled) {
NSLog(@"Cancelled");
} else {
NSLog(@"Logged in");
}
}];