简体   繁体   English

IOS Facebook SDK如何分享图片,链接,文字?

[英]Ios Facebook SDK how i can share an image,a link,a text?

I'm using the last facebook sdk in my ios app and i'm trying to share an image with a description and a link. 我在ios应用程序中使用了最后一个facebook sdk,并且尝试共享包含说明和链接的图像。 I have tried 我努力了

[FBDialogs presentShareDialogWithLink] 

but i can't see my description text in the shared result. 但我无法在共享结果中看到我的描述文本。 I have tried 我努力了

[FBDialogs presentShareDialogWithPhotoParams] 

but the description field of the FBPhotoParams is "onlyread" and i can't add any text. 但是FBPhotoParams的描述字段为“ onlyread”,并且我无法添加任何文本。 So i have abandoned the various fbdialogs and i have tried something that works in another my app: 所以我放弃了各种fbdialogs,我尝试了另一种应用程序:

if ([[FBSession activeSession] isOpen]) {
    /*
     * if the current session has no publish permission we need to reauthorize
     */
    if ([[[FBSession activeSession] permissions]indexOfObject:@"publish_actions"] == NSNotFound) {

        [[FBSession activeSession] requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends
                                              completionHandler:^(FBSession *session,NSError *error){
                                                  [self share];
                                              }];

    }else{
        [self share];
    }
}else{
    /*
     * open a new session with publish permission
     */

    [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                       defaultAudience:FBSessionDefaultAudienceOnlyMe
                                          allowLoginUI:YES
                                     completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                         if (!error && status == FBSessionStateOpen) {
                                             [self share];
                                         }else{
                                             NSLog(@"error");
                                         }
                                     }];



}

Now this method not working and return me an error: 现在这个方法不起作用,并返回一个错误:

"OAuth \"Facebook Platform\" \"insufficient_scope\" \"(#200) The user hasn't authorized the application to perform this action\"";

I haven't the permission to share, but the user never see the permission dialog...Maybe i have to submit my application to Facebook for achive a "general" ublish_actions permission for my facebook app? 我没有共享权限,但用户从未看到权限对话框...也许我必须将我的应用程序提交给Facebook,以获取我的Facebook应用程序的“一般” ublish_actions权限? It's only a link, i don't wanna send a build, wait an approvation,ecc.. Now it's really so complicated to share a link with an image and a text? 它只是一个链接,我不想发送构建,等待批准,ecc ..现在分享图像和文本的链接真的很复杂? There will be a simpler solution , i think... How i can do? 我想会有一个更简单的解决方案......我该怎么办?

use this, 用这个,

NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   name, @"name",
                                   author, @"caption",
                                   linkShare, @"link",
                                   userImage, @"picture",
                                   nil];

[FBWebDialogs presentFeedDialogModallyWithSession:nil
                                       parameters:parameter
                                          handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
                                              if (error)
                                              {
                                                  NSLog(@"Error publishing story: %@", error.description);
                                              }
                                              else
                                              {
                                                  if (result == FBWebDialogResultDialogNotCompleted)
                                                  {
                                                      NSLog(@"User cancelled.");
                                                  }
                                                  else
                                                  {
                                                      NSDictionary *urlParams = [self parseURLParams:[resultURL query]];
                                                      NSLog(@"User login");

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

                                                      }
                                                      else
                                                      {
                                                          NSString *result = [NSString stringWithFormat: @"Posted story, id: %@", [urlParams valueForKey:@"post_id"]];
                                                          NSLog(@"result %@", result);

                                                      }
                                                  }
                                              }
                                         }];    


- (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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM