我遇到了使用Facebook SDK FBWebDialogs类从我的iOS应用程序分享文章链接到Facebook的困难。链接的URL包括查询字符串参数,我在发送到Facebook之前从我的iOS应用程序进行URL编码。
以下是我要分享的示例链接:
http://www.foo.com/message.html?s=This%20is%20a%20test%20&%20an%20example
以下是Facebook在我的时间轴上显示的链接:
?S =此+是一个+ +测试+&安培; + AN +实例
一旦链接发布到我的Facebook时间线,Facebook似乎正在剥离所有URL编码,使我的查询字符串无法编码,这会导致目标Web应用程序无法接收必要的数据。毋庸置疑,如果在Facebook Feed中链接时特殊字符(&,=等)未正确编码,则目标网页很难正确使用查询字符串参数。
与查询字符串参数共享链接的正确方法是什么? querystring params应作为单独的参数传递,还是应该在链接url中以某种方式表示?
以下是与设置共享参数相关的代码。
NSString *url_param_str = [NSString stringWithFormat:@"http://www.foo.com/message.html?s=%@", @"This is a test & an example"];
NSString *web_url_param_str = [url_param_str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSMutableDictionary *feedParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Sharing an article", @"name",
@"This is a test title", @"description",
@"www.foo.com", @"caption",
web_url_param_str, @"link",
nil];
答案 0 :(得分:0)
看起来Facebook决定在使用SLComposeViewController
时清除网址查询参数你现在必须使用Facebook共享。
https://stackoverflow.com/a/32263392/608739
#import <FBSDKShareKit/FBSDKShareKit.h>
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL urlWithString:@"http://www.foo.com/message.html?s=This%20is%20a%20test%20&%20an%20example"];
content.contentDescription = @"Text for facebook";
content.contentTitle = @"Results.";
[FBSDKShareDialog showFromViewController:self
withContent:content
delegate:self];