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

Posted

技术标签:

【中文标题】通过 Facebook iOS SDK 共享链接时如何传递查询字符串参数?【英文标题】:How to pass query string parameters when sharing a link through Facebook iOS SDK? 【发布时间】:2014-01-05 21:00:34 【问题描述】:

我在使用 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=This+is+a+test+&+an+example

链接发布到我的 Facebook 时间线后,Facebook 似乎正在剥离所有 URL 编码,使我的查询字符串没有编码,这导致目标 Web 应用程序无法接收必要的数据。不用说,如果在 Facebook 提要中链接特殊字符(&、= 等)时未正确编码,目标网页将无法正确使用查询字符串参数。

与查询字符串参数共享链接的正确方法是什么?查询字符串参数应该作为单独的参数传递,还是应该在链接 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】:

看起来 Facebook 已决定在使用 SLComposeViewController 时清理 url 查询参数你现在必须使用 Facebook Share。

https://***.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];

【讨论】:

以上是关于通过 Facebook iOS SDK 共享链接时如何传递查询字符串参数?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 facebook SDK 在 facebook messenger 上共享链接

Ios Facebook SDK 我如何共享图像、链接、文本?

使用 facebook SDK 仅共享文本

通过 Javascript SDK 共享 Facebook 链接返回错误 500

通过Facebook Native app - iOS Facebook SDK分享时,“引用”缺失

iOS Facebook SDK 原生分享