iOS Facebook 2019集成(登录,获取用户信息,朋友
2019-05-14 本文已影响0人
77小子
准备工作
科学上网
拥有 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🌟🌟🌟。