[绍棠] Facebook第三方登录

xiaoxiao2021-02-28  90

做Facebook的时候,踩过几个坑,这里随便写写,供大家参考

1.首先申请Facebook的开发者账号,这个是首要的

2.导入Facebook第三方登录的Framework(FBSDKLoginKit.framework,FBSDKCoreKit.framework),因为我只用到了他的登录,只需要获取到他的uid,name,email(只限邮箱注册用户)。SDK下载地址

3.下面就要倒入我们的项目了,因为Facebook的framework都比较大,这里我们就不copy进我们的项目了,我们引入就可以了。将上图两个文件放到项目下面,然后打开Xcode,将文件夹拖入项目,选择 Create groups for any added folders。取消选择 Copy items into destination group's folder。这将在 SDK 的安装位置对其进行引用,而不是将 SDK 复制到应用程序中。

如果报错说找不到这个路径,那么需要在Build Settings->Framework Search Paths添加一下该Framework的路径

接着更改plist文件

创建名字为FacebookAppID(string)的键–输入Facebook app ID

创建名字为FacebookDisplayName(string)的键–输入Facebook appDisplay Name

创建名为URL types的键组

创建名为URL Schemes的子项

添加字符串:前缀fb加App ID例如(fb123456)

因为使用了 SDK v4.6.0 或更高版本,所以需要在plist文件中添加

<key>LSApplicationQueriesSchemes<key>

<array>

<string>fbapi</string>

<string>fb-messenger-api</string>

<string>fbauth2</string>

<string>fbshareextension</string>

</array>

至此,前期的准备工作完成,下面开始代码了

4.要对 Facebook 登录或 Facebook 对话(或需要切换至原生 Facebook 应用程序或 Safari 的任何操作)的结果进行后置处理,您需要将 AppDelegate 连接到 FBSDKApplicationDelegate。在 AppDelegate.m 中添加:

//  AppDelegate.m#import- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[[FBSDKApplicationDelegate sharedInstance] application:application

didFinishLaunchingWithOptions:launchOptions];

return YES;

}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

return [[FBSDKApplicationDelegate sharedInstance] application:application

openURL:url

sourceApplication:sourceApplication

annotation:annotation

];

}

记录应用激活

基本的例子是记录应用激活。要执行此操作,请将以下代码片段添加到 AppDelegate.m:

- (void)applicationDidBecomeActive:(UIApplication *)application {

// 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];

}

5.创建一个按钮,下面我们就写点击事件跳转到Facebook第三方登录

//这个接口需要翻墙

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

[login logOut];//这个一定要写,不然会出现换一个帐号就无法获取信息的错误

[login

logInWithReadPermissions: @[@"public_profile",@"email",@"user_about_me"]

fromViewController:self

handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

if (error) {

NSLog(@"Process error");

} else if (result.isCancelled) {

NSLog(@"Cancelled");

} else {

NSLog(@"succeed");

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]

initWithGraphPath:result.token.userID

parameters:@{@"fields": @"id,name,email"}

HTTPMethod:@"GET"];

[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result,NSError *error) {

// Handle the result

NSLog(@"%@,%@,%@",result[@"id"],result[@"name"],result[@"email"]);

}];

}

转载请注明原文地址: https://www.6miu.com/read-26910.html

最新回复(0)