美文网首页FaceBook
iOS Facebook 2019集成(登录,获取用户信息,朋友

iOS Facebook 2019集成(登录,获取用户信息,朋友

作者: 77小子 | 来源:发表于2019-05-14 14:38 被阅读0次

    准备工作

    科学上网
    
    拥有 Facebook 账号
    
    注册成为 [Facebook 开发者](https://developers.facebook.com/)
    

    开发者网站配置

    (a)打开开发者网站
    
    (b)点击头像
    
    (c)选择添加新应用
    
    (d)填写名称以及联系邮箱
    
    image image
    (e)选中刚刚我们创建的应用
    
    (f)填写隐私权政策网址
    
    (g)保存更改
    
    image
    (h)点击开关,修改开发状态
    
    (i)选择我们对应的类别
    
    (j)确认
    
    image

    这时,开发状态已经改变,我们可以开始正式集成 Facebook 。

    集成 Facebook

    更多的我们可能需要参考官方网站 iOS 版 Facebook 登录 — 快速入门

    1.初步工作

    (a)创建新的 Xcode 项目
    (b)pod init
    (c)Podfile文件中写下边两段其中一个,在文章最后,我会说一下两种方式的区别。
        (1)
            pod 'FBSDKLoginKit'
        (2)
            pod 'FBSDKCoreKit','~>4.5.1'
            pod 'FBSDKLoginKit','~>4.5.1'
            pod 'FBSDKShareKit','~>4.5.1'
    (d)pod install
    

    2.配置项目

    (a)右键 info.plis t文件  --> Open As --> Source Code
    (b)将官方文档中 XML 代码片段复制并粘贴到文件正文中
    <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb2289137818071827</string> </array> </dict> </array> <key>FacebookAppID</key> <string>2289137818071827</string> <key>FacebookDisplayName</key> <string>现金贷</string>
    
    (c)如要使用任何 Facebook 对话框(例如,登录、分享、应用邀请等),以便从您的应用切换至 Facebook 应用,则您应用程序的 info.plist 还必须包含: 
    <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-share-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
    
    image

    3.构建设置

    前往 Xcode 中的项目导航器,然后选择您的项目以查看项目设置。
    选择其他关联工具标记以进行编辑。
    将 -ObjC 标记添加到其他关联工具标记,并应用于所有构建目标。
    
    这个东西在哪里设置,我相信应该不需要截图了吧。(偷个懒)
    

    4.项目代码

    //  AppDelegate.m
    //
    #import <FBSDKCoreKit/FBSDKCoreKit.h>
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        [[FBSDKApplicationDelegate sharedInstance] application:application
                                 didFinishLaunchingWithOptions:launchOptions];
        [FBSDKSettings setAppID:@"2289137818071827"];
        return YES;
    }
    
    
    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
                options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
        
        BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
                                                                      openURL:url
                                                            sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                                   annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
                        ];
        // Add any custom logic here.
        return handled;
    }
    
    
    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
        
        BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
                                                                      openURL:url
                                                            sourceApplication:sourceApplication
                                                                   annotation:annotation
                        ];
        // Add any custom logic here.
        return handled;
    } 
    
    
    //  ViewController.m
    //
    #import <FBSDKCoreKit/FBSDKCoreKit.h>
    #import <FBSDKLoginKit/FBSDKLoginKit.h>
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
        // Optional: Place the button in the center of your view.
        loginButton.center = self.view.center;
        [self.view addSubview:loginButton];
        
        FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
        [loginManager logInWithReadPermissions:@[@"public_profile"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
            //NSLog(@"result=%@",result);
            //result.token.userID
            [self getUserInfoWithResult:result];
        }];
    }
    
    //获取用户信息 picture用户头像
    - (void)getUserInfoWithResult:(FBSDKLoginManagerLoginResult *)result
    {
        NSDictionary*params= @{@"fields":@"id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified"};
        
        FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                      initWithGraphPath:result.token.userID
                                      parameters:params
                                      HTTPMethod:@"GET"];
        [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
            NSLog(@"%@",result);
            
            // 下边的部分 是我获取到的信息,剩下的信息可能是因为没有申请到权限吧
            // 现阶段用的开发者账号还是自己的,更多的可能性讲需要注册下来公司的账户,并开通相应的权限
            
    //        {
    //            "first_name" = Qingfeng;
    //            id = 429690791177412;
    //            "last_name" = Li;
    //            name = "Qingfeng Li";
    //            picture =     {
    //                data =         {
    //                    height = 50;
    //                    "is_silhouette" = 0;
    //                    url = "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=429690791177412&height=50&width=50&ext=1560396740&hash=AeQrpS9VqOZQ9-cK";
    //                    width = 50;
    //                };
    //            };
    //        }
        }];
    }
    
    

    基本大功告成
    这时候,我相信你已经可以运行起来了吧。
    同时 Facebook 的授权登录在某种理论上来讲,也没什么问题了。

    问题

    回到刚刚说的 Podfile 文件问题,为什么会有说这两种方式。
    如果你已运行成功并可以授权登录,那么你可以能会发现,无法跳转到 Facebook App中,而是弹出 web 的形式登录授权。
    因为 Facebook 觉得跳转的形式体验不好,所以在最新的 SDK 取消了跳转的方式。
    不过我们可以通过老版本的 SDK 实现 App 跳转授权。

    修改 Podfile 文件
    
    pod 'FBSDKCoreKit','~>4.5.1'
    pod 'FBSDKLoginKit','~>4.5.1'
    pod 'FBSDKShareKit','~>4.5.1'
    

    TODO

    因为开发者账号权限问题,还是有一些功能没有开通。
    后续项目正式启动后,会陆续更新文章至完整。

    代码地址

    代码已更新至 github 地址
    如果帮到了你,希望点个🌟🌟🌟star🌟🌟🌟。

    相关文章

      网友评论

        本文标题:iOS Facebook 2019集成(登录,获取用户信息,朋友

        本文链接:https://www.haomeiwen.com/subject/topsaqtx.html