国外第三方登录之facebook(登录,获取用户信息,朋友列表等)含demo
2017-07-13 17:43
756 查看
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 登录 — 新手入门。
1. 选择应用或新建应用
选择应用或新建应用,将应用相关信息输入以下代码片段。搜索你的应用
或
新建应用
2.设置开发环境t
在使用 iOS 版 Facebook 登录之前,先设置您的开发环境。
2a.下载 iOS 版 Facebook SDK
下载 SDK 并将存档解压到 ~/Documents/FacebookSDK。 (注意,这是 Objective-C 版 SDK。关于 Swift,请参阅 Swift 版 Facebook 登录 — 入门指南。)
下载
iOS 版 SDK
2b.向 Xcode 项目添加登录工具包
打开应用的 Xcode 项目。如果您的项目中没有 Frameworks(框架)组,请创建一个。
打开
~/Documents/FacebookSDK。
将
FBSDKLoginKit拖放至项目导航器内的
Frameworks。
在项目中打开 Xcode 的 Build Settings(构建设置)选项卡。
将
~/Documents/FacebookSDK添加到项目的 Framework Search Paths(框架搜索路径)。
您使用 Facebook SDK 时,如果未禁用事件自动记录功能,应用事件将被自动记录和收集,用于 Facebook 分析。关于哪些信息会被收集以及如何禁用事件自动记录的详细信息,请参阅应用事件自动记录。
3.在 Facebook 注册和配置您的应用
注册和配置您的应用,以便能够使用 Facebook 登录功能。
3a.添加 Bundle ID
在 Xcode 项目的 iOS 应用对象中,找到 Bundle ID,并将其粘贴到下面的方框内。Bundle ID
您可以在今后通过设置页面的 iOS 版块更改 Bundle ID。
com.txtws.greenbox
移除
Save
3b.为应用启用单点登录
启用单点登录将单点登录设置为“是”,即可为应用启用单点登录,如下所示。
是 否 单点登录将从 iOS 通知中启动 |
4.配置 info.plist
在 Xcode 项目的“Supporting Files”(支持文件)文件夹中找到 .plist 文件。右键点击
.plist文件,然后选择“Open As Source Code”(作为源代码打开)。
将下列 XML 代码片段复制并粘贴到文件正文中 (
<dict>...</dict>)。
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb452454368463124</string> </array> </dict> </array> <key>FacebookAppID</key> <string>452454368463124</string> <key>FacebookDisplayName</key> <string>Graybox</string>
复制代码
如果您使用任何 Facebook 对话框(例如:登录、分享、应用邀请等),以便从您的应用切换至 Facebook 应用,则您应用的
.plist还必须处理以下代码。
<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
复制代码
5.连接应用委托
对于需要切换到原生 Facebook 应用或 Safari 的操作(例如102ef
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 缓存。
FBSDKAccessToken包含
userID,您可以使用此编号识别用户。如果需要额外的个人主页信息,请参阅个人主页部分。
您应该更新视图控件,在加载时便检查当前口令。如果用户已经向您的应用授予权限,此操作就会减少不必要的“应用切换至 Facebook”流程:
- (void)viewDidLoad { [super viewDidLoad]; if ([FBSDKAccessToken currentAccessToken]) { // 用户已登录,采取前往下一个视图控制器等操作。 } }
复制代码
6c.请求权限
添加 Facebook 登录后,您的应用就可以向用户请求一些数据的权限。Facebook“登录”按钮的读取权限
对于 Facebook“登录”按钮 (
FBSDKLoginButton),可使用
readPermissions属性请求附加的读取权限。
在视图头文件中添加:
// ViewController.h #import <FBSDKLoginKit/FBSDKLoginKit.h> @interface ViewController :UIViewController @property (weak, nonatomic) IBOutlet FBSDKLoginButton *loginButton; @end
复制代码
在视图文件中添加:
// 扩展“7.添加 Facebook 登录按钮代码”中提供的代码示例 // 在 viewDidLoad 方法中: loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
复制代码
现在,您的应用即可请求用户的电子邮箱和好友列表。
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
相关文章推荐
- 国外第三方登录之facebook(登录,获取用户信息,朋友列表等)含演示
- Eclipse facebook 第三方登录 获取用户信息 附demo
- iOS第三方登录之Twitter(登录,获取用户信息)含demo
- PHP第三方登录之微博登录并获取用户信息
- QQ第三方登录获取用户信息
- 实现新浪微博第三方登录获取用户信息
- Android——第三方登录——新浪微博——获取用户信息——账户绑定
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- Android第三方QQ登录并获取QQ用户信息
- 用js实现facebook登录获取用户的信息(包括邮箱)
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
- 支付宝开发平台之第三方授权登录与获取用户信息
- 微信api 第三方平台授权 登录 ,获取用户信息
- facebook+cocos2d-x (二)登录、获取用户信息及好友列表
- PHP版微信第三方实现一键登录及获取用户信息的方法
- Android Twitter第三方登录&获取用户信息
- 【Android实战】实现新浪微博第三方登录获取用户信息
- 移动端第三方登录(微信)java验证并获取用户信息
- 支付宝开发平台之第三方授权登录与获取用户信息