通过 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 我如何共享图像、链接、文本?
通过 Javascript SDK 共享 Facebook 链接返回错误 500