1

アプリケーションで 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 の場合 - メッセージをプログラムでダイアログを介して投稿するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

3

以下のコードをアプリに追加します。

FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init];
[action setString:message forKey: @"message"];  // This is the key point!
于 2016-01-13T09:53:56.743 に答える