如何通过Facebook iOS SDK共享链接时传递查询字符串参数?

时间:2014-01-05 21:00:34

标签: ios iphone facebook facebook-ios-sdk

我遇到了使用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];

1 个答案:

答案 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];