アプリケーションで Facebook SDK の使用を v3.x から v4.x に置き換える必要があります。次のコードで古いSDKを使用した場合:
NSString *msg = [NSString stringWithFormat:@"%@\n%@\n%@", petition.petition_name, petition.recipient, petition.content];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
msg, @"message",
petition.uri ? petition.uri : [NSURL URLWithString:SITE], @"link",
nil
];
NSLog(@"%@\n%@", msg, params);
[FBRequestConnection startWithGraphPath:@"me/feed"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
. . . .
}];
文字列変数msgは、投稿が共有されたときにテキスト メッセージを渡しました:
Facebook SDK 4.x には、そのようなタスクのためのフィールドや機能を持たない特別なダイアログがあります。私は次のコードを使用します (og:- params を使用しても - 試した og:message があっても)、私の投稿はメッセージなしで表示されました:
FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
photo.image = [self.pdata.imagesArr firstObject];
// Optionally set user generated to YES only if this image was created by the user
// You must get approval for this capability in your app's Open Graph configuration
// photo.userGenerated = YES;
NSString *urlStr = [NSString stringWithFormat:@"%@/api/images/%@?width=%f&height=%f&x=0&y=0&resize=1", K_BASE_URL, [[self.pdata.imagesArr firstObject] image_id], K_PETITION_IMAGE_WIDTH, K_PETITION_IMAGE_HEIGHT];
// Create an object
NSDictionary *properties = @{
@"og:type": @"books.book",
@"og:title": self.pdata.petition_name,
@"og:description": self.pdata.content,
@"og:image": urlStr,
@"og:url": [NSURL URLWithString:self.pdata.uri],
@"og:message": @"QQQQQQQWW",
@"books:isbn": @"0-553-57340-3",
};
FBSDKShareOpenGraphObject *object = [FBSDKShareOpenGraphObject objectWithProperties:properties];
// Create an action
FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init];
action.actionType = @"books.reads";
[action setObject:object forKey:@"books:book"];
// Create the content
FBSDKShareOpenGraphContent *content = [[FBSDKShareOpenGraphContent alloc] init];
content.action = action;
content.previewPropertyName = @"books:book";
[FBSDKShareDialog showFromViewController:self
withContent:content
delegate:nil];
このメッセージは、システム Facebook ダイアログの ShareDialog からのみウォールに渡すことができますが、ユーザーはメッセージを手動で入力する必要があります。
だから私は2つの質問があります:
1) この FBSDKShareDialog がなくても投稿を共有できますか? 出来ますか?
2) 最初 == false の場合 - メッセージをプログラムでダイアログを介して投稿するにはどうすればよいですか?
前もって感謝します!