将 Facebook 图像/URL 保存在 Parse DB 中


        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,因为您可能没有带有键匹配urlStringuserData 值。

试试这个,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];

希望对您有所帮助!

最新更新