如果你的app要进入国际市场,那么就少不了集成facebook登录,下面总结一下facebook登录的步骤。Don't forget前提条件是要翻墙啦
首先,需要在Facebook后台注册一个应用,当然,要先登录进后台。注册完成之后会得到APPID和dispalyname。
在Facebook网站设置开发环境,有可选项Swift Package Manager、Cocoapods、Carthage和FB SDK。可以根据自己的项目情况选择合适的一项进行配置。
在网站填写app里配置的Bundle ID。
在xcode项目中配置info.plist,其中sheme是为了从Facebook跳转回app,FacebookAppID和FacebookDisplayName供Facebook读取,例:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb你的FacebookAppID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>你的FacebookAppID</string>
<key>FacebookDisplayName</key>
<string>你的FacebookDisplayName</string>
- 还需要在info.plist配置facebook白名单,这样才可以打开facebook。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
- 注册连接facebook,OC代码如下:
- (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<UIApplicationOpenURLOptionsKey, id> *)options
{
[[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
options:options];
return YES;
}
如果使用的是SceneDelegate,那么就用如下代码:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@import FacebookCore;
@interface SceneDelegate ()
@end
@implementation SceneDelegate
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts
{
UIOpenURLContext *context = URLContexts.allObjects.firstObject;
[FBSDKApplicationDelegate.sharedInstance application:UIApplication.sharedApplication
openURL:context.URL
sourceApplication:context.options.sourceApplication
annotation:context.options.annotation];
}
- 登录facebook。登录可以使用facebook原生的FBSDKLoginButton,也可以自定义button,这里说一下自定义button的action,例:
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];
[login logInWithPermissions:@[@"public_profile"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *_Nullable result, NSError *_Nullable error) {
if (error) {
NSLog(@"Process error");
} else if (result.isCancelled) {
NSLog(@"Cancelled: %@", error);
} else {
NSLog(@"Logged in");
}
}];
其中permissions参数还可填email等,看自己需要。
FBSDK的SDK可以从下面地址下载:https://github.com/facebook/facebook-ios-sdk/releases/tag/v9.2.0