demo地址:http://download.csdn.net/download/ioscircleandcircle/9897852
记得先翻墙,哈哈。
一 facebooK接入及登录官方文档
https://developers.facebook.com/docs/facebook-login/ios
iOS 版 Facebook 登录 — 快速入门
通过 Facebook 登录您的应用时,用户可以向应用授予权限,以便您可以检索信息或以用户的身份在 Facebook 执行操作。
以下步骤用于将 Facebook 登录添加到您的 iOS Objective-C 项目中。要将 Facebook 登录添加到 Swift 项目,请参阅Swift 中的 Facebook 登录 — 新手入门。
2.设置开发环境t
在使用 iOS 版 Facebook 登录之前,先设置您的开发环境。
2a.下载 iOS 版 Facebook SDK
下载 SDK 并将存档解压到
~/Documents/FacebookSDK。
(注意,这是 Objective-C 版 SDK。关于 Swift,请参阅 Swift 版 Facebook 登录 — 入门指南。)
(注意,这是 Objective-C 版 SDK。关于 Swift,请参阅 Swift 版 Facebook 登录 — 入门指南。)
2b.向 Xcode 项目添加登录工具包
- 打开应用的 Xcode 项目。
- 如果您的项目中没有 Frameworks(框架)组,请创建一个。
- 打开
~/Documents/FacebookSDK
。 - 将
FBSDKLoginKit
拖放至项目导航器内的Frameworks
。 - 在项目中打开 Xcode 的 Build Settings(构建设置)选项卡。
- 将
~/Documents/FacebookSDK
添加到项目的 Framework Search Paths(框架搜索路径)。
您使用 Facebook SDK 时,如果未禁用事件自动记录功能,应用事件将被自动记录和收集,用于 Facebook 分析。关于哪些信息会被收集以及如何禁用事件自动记录的详细信息,请参阅应用事件自动记录。
4.配置 info.plist
在 Xcode 项目的“Supporting Files”(支持文件)文件夹中找到
.plist 文件。
- 右键点击
.plist
文件,然后选择“Open As Source Code”(作为源代码打开)。 - 将下列 XML 代码片段复制并粘贴到文件正文中 (
<dict>...</dict>
)。 - 如果您使用任何 Facebook 对话框(例如:登录、分享、应用邀请等),以便从您的应用切换至 Facebook 应用,则您应用的
.plist
还必须处理以下代码。
5.连接应用委托
对于需要切换到原生 Facebook 应用或 Safari 的操作(例如 Facebook 登录或 Facebook 对话框等),要对结果做后处理,您需要将
AppDelegate
类关联到
FBSDKApplicationDelegate
对象。要实现这一操作,请将以下代码添加到
AppDelegate.m
文件。
// AppDelegate.m #import <FBSDKCoreKit/FBSDKCoreKit.h> - (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 { BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation ]; // 在此添加任意自定义逻辑。 return handled; }
6.将 Facebook 登录功能添加到代码中
在您的 iOS 应用中添加 Facebook 登录按钮。
6a.将 Facebook 登录功能添加到代码中
要向应用添加具有 Facebook 品牌特征的“登录”按钮,请将下列代码片段添加至视图控制器。
// 将下列代码添加到文件标头中,例如:在 ViewController.m 中 // 置于 #import "ViewController.h" 之后 #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h> // 将以下代码添加到正文 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; //或者:将按钮放在视图的中间位置。 loginButton.center = self.view.center; [self.view addSubview:loginButton]; } @end
6b.检查当前登录状态
应用一次只能允许一位用户登录。我们会以
[FBSDKAccessToken currentAccessToken]
代表登录应用的每位用户。
FBSDKLoginManager
将为您设置此口令,且在设置
currentAccessToken
时,还会自动将口令写入 keychain 缓存。
6c.请求权限
添加 Facebook 登录后,您的应用就可以向用户请求一些数据的权限。
Facebook“登录”按钮的读取权限
对于 Facebook“登录”按钮 (
FBSDKLoginButton
),可使用
readPermissions
属性请求附加的读取权限。
在视图头文件中添加:
在视图文件中添加:
现在,您的应用即可请求用户的电子邮箱和好友列表。
7.后续步骤
恭喜,您已成功地向 iOS 应用添加了 Facebook 登录功能!请务必参阅文档的其他内容,获取更多进阶指南。
二 facebooK自定义登录按钮
https://developers.facebook.com/docs/facebook-login/ios/advanced
//自定义登陆按钮 - (void)customLogin { UIButton *myLoginButton=[UIButton buttonWithType:UIButtonTypeCustom]; myLoginButton.backgroundColor=[UIColor darkGrayColor]; myLoginButton.frame=CGRectMake(0,60,180,40); // myLoginButton.center = self.view.center; [myLoginButton setTitle: @"My Login Button" forState: UIControlStateNormal]; // Handle clicks on the button [myLoginButton addTarget:self action:@selector(loginButtonClicked) forControlEvents:UIControlEventTouchUpInside]; // Add the button to the view [self.view addSubview:myLoginButton]; } // @[@"public_profile", @"email", @"user_friends"]; 您的应用即可请求用户的电子邮箱和好友列表。 -(void)loginButtonClicked { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logOut];////这个一定要写,不然会出现换一个帐号就无法获取信息的错误 [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"); [self getUserInfoWithResult:result]; [self getUserListWithResult:result]; }
三 facebook可以获取的权限
https://developers.facebook.com/docs/facebook-login/permissions
四 facebook获取用户信息
//获取用户信息 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); /* { "age_range" = { min = 21; }; "first_name" = "\U6dd1\U5a1f"; gender = female; id = 320561731689112; "last_name" = "\U6f58"; link = "https://www.facebook.com/app_scoped_user_id/320561731689112/"; locale = "zh_CN"; name = "\U6f58\U6dd1\U5a1f"; picture = { data = { "is_silhouette" = 0; url = "https://fb-s-c-a.akamaihd.net/h-ak-fbx/v/t1.0-1/p50x50/18157158_290358084709477_3057447496862917877_n.jpg?oh=01ba6b3a5190122f3959a3f4ed553ae8&oe=5A0ADBF5&__gda__=1509731522_7a226b0977470e13b2611f970b6e2719"; }; }; timezone = 8; "updated_time" = "2017-04-29T07:54:31+0000"; verified = 1; } */ }]; }
五 facebook获取朋友列表
//获取朋友列表 - (void)getUserListWithResult:(FBSDKLoginManagerLoginResult *)result { NSString *token = [FBSDKAccessToken currentAccessToken].tokenString; NSLog(@"%@",token); FBSDKGraphRequest *requestT = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/friends",result.token.userID] parameters:@{@"fields":@"uid"} HTTPMethod:@"GET"]; [requestT startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { NSLog(@"friends:%@",result); /* { data = ( ); summary = { "total_count" = 314; }; } */ }]; }
编辑:psj