だから私は、ユーザーが Facebook Graph API を使用して場所にチェックインしたときに写真をアップロードできるようにする必要がある iPhone アプリを作成しています。
今私のコードはこれです:
if (![delegate.facebook isSessionValid])
[delegate.facebook authorize:[NSArray arrayWithObjects:@"publish_stream", @"offline_access", @"publish_checkins", nil]];
parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:[placeDictionary objectForKey:@"id"] , @"place",
serialisedCoordinates, @"coordinates",
message, @"message",
pickedImage, @"picture",
@"Via the official REDACTED app", @"application", nil];
[delegate.facebook requestWithGraphPath:@"me/checkins" andParams:parameters andHttpMethod:@"POST" andDelegate:fbCheckInResultHandler];
「pickedImage」は、UIImagePickerController から返された UIImage です。
画像を選択しても (つまり、pickedImage != nil)、チェックイン時に画像がアップロードされません。チェックインはメッセージ、座標、アプリ情報と共に Facebook に表示されますが、画像はありません。
誰かが助けてくれることを本当に願っています。
乾杯、キラン
チェックインが行われたときに呼び出される関数全体を次に示します。
-(void)fbPostCheckInWithMessage:(NSString *)message andFriends:(NSArray *)friends {
if (![delegate.facebook isSessionValid]) {
NSLog(@"Session invalid");
[delegate.facebook authorize:[NSArray arrayWithObjects:@"publish_stream", @"offline_access", @"publish_checkins", nil]];
} else {
NSLog(@"Session valid");
}
NSMutableString *friendsIDString;
friendsIDString = [NSMutableString stringWithFormat:@"%@", [[friends objectAtIndex:0] userID]];
if ([friends count] > 1) {
for (User *f in taggedFriends) {
if (f != [taggedFriends objectAtIndex:0]) {
[friendsIDString appendString:[NSString stringWithFormat:@", %@", f.userID]];
}
}
}
NSLog(@"Tagged Friends: %@", friendsIDString);
SBJSON *jsonWriter = [SBJSON new];
NSMutableDictionary *locationDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"%f", userLocation.coordinate.latitude], @"latitude",
[NSString stringWithFormat:@"%f", userLocation.coordinate.longitude], @"longitude", nil];
NSString *serialisedCoordinates = [jsonWriter stringWithObject:locationDictionary];
NSData *pictureData = UIImagePNGRepresentation(pickedImage);
NSLog(@"picture: %@", pictureData);
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:[placeDictionary objectForKey:@"id"] , @"place",
serialisedCoordinates, @"coordinates",
pictureData, @"message",
pickedImage, @"picture",
@"Via the official REDACTED app", @"application", nil];
[delegate.facebook requestWithGraphPath:@"me/checkins" andParams:parameters andHttpMethod:@"POST" andDelegate:fbCheckInResultHandler];
}
friendsIDString を使用して、ユーザーの友達の ID を取得しています。問題の原因 (写真のタグ付け) を特定しようとしていたため、すべてコメントアウトされていたため、ここの例からこの機能を削除しました。それを明らかにしたかっただけです。
--UPDATE-- PickedImage の設定方法は次のとおりです。UIImagePickerController のデリゲート メソッドを使用します。
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Picked image");
pickedImage = [[UIImage alloc] init];
pickedImage = image;
[imagePickerController dismissModalViewControllerAnimated:YES];
}