В разделе Facebook я не могу опубликовать имя, ссылку, описание и изображение на FBLinkShareParams в установленном приложении Facebook.

Я хочу опубликовать имя, linkDescription и изображение на FBLinkShareParams, но не могу сделать это при условии, установленном приложением Facebook, но оно отлично работает в условии, когда приложение Facebook не установлено, когда это делается в FBWebDialogs. Я смог опубликовать params.link только в установленном состоянии приложения Facebook.

Я использовал код, как показано ниже:

      #pragma mark - facebook share
    //facebook share
    - (void)shareLinkinFB{
    /* Facebook app is installed*/
        FBLinkShareParams *params = [[FBLinkShareParams alloc] init];
        params.link = [NSURL URLWithString:@"https://developers.facebook.com/docs/ios/share/"];
        params.name= @"Dieheart";
        params.picture= [NSURL URLWithString:Str_KoolkatPic];
        params.linkDescription=@"A quick and better way to get anything delivered at your doorstep. ";



        // If the Facebook app is installed and we can present the share dialog
        if ([FBDialogs canPresentShareDialogWithParams:params]) {
            [FBDialogs presentShareDialogWithLink:params.link handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {    if(error) {
                // An error occurred, we need to handle the error
                NSLog(@"Error publishing story: %@", error.description);
            } else {
                // Success
                NSLog(@"result %@", results);
            }
            }];
            NSLog(@"Share login page Now");


        } else {
            /* Facebook app Not installed*/
            NSLog(@"Share dialog");
            NSString *urlString = [NSString stringWithFormat:@"%@/resources/images/login-logo.png",SERVER_ADDRESS];
            NSString *Str_NameLabel;
            NSString *Str_Description;
            Str_NameLabel=@"testing for idelivery IOS application";
            Str_Description=@"Share functionality in progress";

            NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                           Str_NameLabel, @"name",
                                           @"idelivery Town center", @"caption",
                                           Str_Description, @"description",
                                           @"https://www.facebook.com/edeliveryksa", @"link",
                                           urlString, @"picture",
                                           nil];
            // Show the feed dialog
            [FBWebDialogs presentFeedDialogModallyWithSession:nil parameters:params
                                                      handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
                                                          if (error) {
                                                              // An error occurred, we need to handle the error
                                                              // See: https://developers.facebook.com/docs/ios/errors
                                                              NSLog(@"Error publishing story: %@", error.description);
                                                          } else {
                                                              if (result == FBWebDialogResultDialogNotCompleted) {
                                                                  // User cancelled.
                                                                  NSLog(@"User cancelled.");
                                                              } else {
                                                                  // Handle the publish feed callback
                                                                  NSDictionary *urlParams = [self parseURLParams:[resultURL query]];

                                                                  if (![urlParams valueForKey:@"post_id"]) {
                                                                      // User cancelled.
                                                                      NSLog(@"User cancelled.");

                                                                  } else {
                                                                      // User clicked the Share button
                                                                      NSString *result = [NSString stringWithFormat: @"Posted story, id: %@", [urlParams valueForKey:@"post_id"]];
                                                                      NSLog(@"result %@", result);
                                                                      [self postSuccess]; // success vako condn ko lagi banako
                                                                  }
                                                              }
                                                          }
                                                      }];
        }}



    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {

        BOOL urlWasHandled = [FBAppCall handleOpenURL:url
                                    sourceApplication:sourceApplication
                                      fallbackHandler:^(FBAppCall *call) {
                                          NSLog(@"Unhandled deep link: %@", url);
                                          // Here goes the code to handle the links
                                      }];

        return urlWasHandled;
    }

    // A function for parsing URL parameters returned by the Feed Dialog.
    - (NSDictionary*)parseURLParams:(NSString *)query {
        NSArray *pairs = [query componentsSeparatedByString:@"&"];
        NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
        for (NSString *pair in pairs) {
            NSArray *kv = [pair componentsSeparatedByString:@"="];
            NSString *val =
            [kv[1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            params[kv[0]] = val;
        }
        return params;
    }


    - (void)postSuccess{

        NSLog(@" post success");
    }

Надеюсь, что кто-нибудь сможет мне помочь

1 ответ

Похоже, ты звонишь canPresentShareDialogWithParams: с реальными параметрами, но когда дело доходит до фактического представления диалога, вы вызываете его с nil ссылка, которая, вероятно, поэтому ничего не появляется.

Вы должны позвонить presentShareDialogWithParams:clientState:handler: метод с параметрами, которые вы создали.

[FBDialogs presentShareDialogWithParams:params 
                            clientState:nil
                                handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {...}];
Другие вопросы по тегам