【问题标题】:Ios Facebook SDK how i can share an image,a link,a text?Ios Facebook SDK 我如何共享图像、链接、文本?
【发布时间】:2015-01-15 10:33:38
【问题描述】:

我在我的 ios 应用程序中使用了最后一个 facebook sdk,我正在尝试分享带有描述和链接的图像。我试过了

[FBDialogs presentShareDialogWithLink] 

但我在共享结果中看不到我的描述文本。我试过了

[FBDialogs presentShareDialogWithPhotoParams] 

但 FBPhotoParams 的描述字段是“只读”,我无法添加任何文本。所以我放弃了各种 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");
                                         }
                                     }];



}

现在这个方法不起作用并返回错误:

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

我没有分享权限,但用户从未看到权限对话框...也许我必须将我的应用程序提交给 Facebook 以获得我的 Facebook 应用程序的“一般”ublish_actions 权限?这只是一个链接,我不想发送构建,等待批准,ecc .. 现在共享带有图像和文本的链接真的很复杂吗?我想会有一个更简单的解决方案......我该怎么办?

【问题讨论】:

    标签: ios iphone facebook facebook-graph-api


    【解决方案1】:

    使用这个,

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

    【讨论】:

    • 感谢这是我已经用于 fbdialogs 的后备,它可以工作,但标题被剪掉了,我只能在我的 Facebook 手机应用程序中看到“...”之前的几个字符。也许我需要其他一些解决方案,但无论如何谢谢
    • 无论如何我将其标记为正确,因为它似乎是最接近现有解决方案的答案
    • 姓名、描述等字数限制是多少?
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多