Ios Facebook SDK 我如何共享图像、链接、文本?
Posted
技术标签:
【中文标题】Ios Facebook SDK 我如何共享图像、链接、文本?【英文标题】:Ios Facebook SDK how i can share an image,a link,a text? 【发布时间】: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 .. 现在共享带有图像和文本的链接真的很复杂吗?我想会有一个更简单的解决方案......我该怎么办?
【问题讨论】:
【参考方案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 手机应用程序中看到“...”之前的几个字符。也许我需要其他一些解决方案,但无论如何谢谢 无论如何我将其标记为正确,因为它似乎是最接近现有解决方案的答案 姓名、描述等字数限制是多少?以上是关于Ios Facebook SDK 我如何共享图像、链接、文本?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 facebook SDK 在 facebook messenger 上共享链接
通过 ios Facebook SDK 中的共享对话框共享时归属应用名称