NSURL *pictureURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large&return_ssl_resources=1", facebookID]];
NSString *urlString = [pictureURL absoluteString];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
// result is a dictionary with the user's Facebook data
NSDictionary *userData = (NSDictionary *)result;
NSString *facebookID = userData[@"id"];
NSURL *pictureURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large&return_ssl_resources=1", facebookID]];
NSString *urlString = [pictureURL absoluteString];
NSLog(@"sting=%@",urlString);
PFUser *me = [PFUser currentUser];
me[@"facebookId"] = userData[@"id"];
me["pictureURL"] = userData[urlString];
me[@"username"] = userData[@"name"];
[me saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
if (error) {
NSLog(@"Error to store=%@",error.localizedDescription);
}
}];
[self presentViewController:push animated:YES completion:nil];
} else {
[self presentViewController:push animated:YES completion:nil];
}
}];
当任何新用户登录我的应用程序时,我需要存储Facebook图像或URL。 AFAIK 我们无法直接保存网址,因此尝试将其转换为NSString,但随后它抛出错误"'不能对PFObject上的键或值使用nil。使用 NSNull 作为值。
有什么方法可以存储该链接或任何其他替代方法将图像直接保存到 Parse 中?
您的问题很可能是由以下行引起的:
me["pictureURL"] = userData[urlString];
您很可能希望这是:
me["pictureURL"] = urlString;
如您所知,您将me[@"pictureURL"]
设置为 nil
,因为您可能没有带有键匹配urlString
的 userData
值。
试试这个,url应该转换为数据,然后保存为PFFile。
NSURL *pictureURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture? type=large&return_ssl_resources=1", facebookID]];
NSData *data = [NSData contentsOfURL:picureURL];
PFFile *file = [PFFile fileWithData:data];
//save it
[file saveInBackground];
希望对您有所帮助!