Facebook 登录 - 获取用户数据
Posted
技术标签:
【中文标题】Facebook 登录 - 获取用户数据【英文标题】:Facebook Login - Get User Data 【发布时间】:2014-12-01 11:08:37 【问题描述】:我正在使用 Parse 作为后端在 ios 上构建应用程序。
这样做我使用 Parse Facebook SDK 是为了首先将 Facebook 链接到我的 Parse 用户,然后查询他的数据并保存它们。
问题是: 有时我没有收到一些信息,例如电子邮件(userData[@"email"] 为 nil)、first_name、name ..,或者个人资料图片没有t 下载。
并非一直如此(实际上非常罕见),并且不可能可靠地复制该问题以便我可以解决它。而且通常只是缺少一个字段而不是全部。
所以我的数据库中出现了漏洞(当它是用户的电子邮件地址时并不酷:我主要关心)
这是我编写方法的方式(我编辑了大部分 if(error) 管理以使其更短)。
有什么想法吗?
谢谢你们!
NSArray *permissionsArray = @[@"public_profile",@"email", @"user_friends"];
[PFFacebookUtils initializeFacebook];
// Login PFUser using Facebook
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error)
if (user.isNew)
NSLog(@"User with facebook signed up and logged in!");
[self fbData:self];
else
NSLog(@"User with facebook logged in!");
[self fbDataAlreadyLog:self];
];
然后我调用我的“fbData”函数,以便将用户数据填充到 Parse:
-(IBAction)fbData:(id)sender
[PFFacebookUtils initializeFacebook];
FBRequest *request = [FBRequest requestForMe];
// Send request to Facebook
[request startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *userCloud, NSError *error)
if (!error)
// result is a dictionary with the user's Facebook data
NSDictionary *userData = userCloud;
NSString *facebookID = userData[@"id"];
NSURL *pictureURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large&return_ssl_resources=1", facebookID]];
PFUser *user = [PFUser currentUser];
if (userData[@"name"])
user[@"name"] = userData[@"name"];
if (userData[@"first_name"])
user[@"first_name"] = userData[@"first_name"];
if (userData[@"last_name"])
user[@"last_name"] = userData[@"last_name"];
if (userData[@"id"])
user[@"fbID"] = userData[@"id"];
if (userData[@"gender"])
user[@"gender"] = userData[@"gender"];
if (userData[@"email"])
user.email = userData[@"email"];
user.username = userData[@"email"];
if (userData[@"age_range"])
user[@"age_range"] = userData[@"age_range"];
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:pictureURL
options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize)
// progression tracking code
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished,NSURL *imageURL)
if (image)
// do something with image
NSData *imageNSData = UIImagePNGRepresentation(image);
PFFile *imageFile = [PFFile fileWithName:@"profilePic" data:imageNSData];
user[@"image"] = imageFile;
[user saveInBackgroundWithBlock];
//Once the Save Block is done I managed a few more thing before moving on to the next ViewController
];
];
【问题讨论】:
【参考方案1】:这样试试
NSArray *permissionsArray = @[ @"user_about_me", @"user_relationships", @"user_birthday", @"user_location"];
【讨论】:
以上是关于Facebook 登录 - 获取用户数据的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 注册-> 获取用户 fb 信息-> 使用我的应用程序进行身份验证-> 如果用户存在于数据库中,则登录,否则创建帐户
通过从我的数据库表中发送用户名和密码来登录 Facebook