如何在Feed中的Facebook自定义故事对象中指定标题的链接URL

时间:2014-08-16 00:13:41

标签: ios facebook facebook-graph-api

我正在使用Facebook SDK for iOS的3.16.1版本将自定义故事对象发布到用户的时间轴,但是我得到了一些意想不到的结果。我指定了url和可选的图像(我在FB上登台)。问题是仅在浏览器中,帖子出现了链接到我的FB应用页面的标题(请参见屏幕截图中的红色框),而不是我提供的网址。图片链接到我提供的URL很好。在FB移动应用程序中查看时,单击标题DOES,并打开我提供的URL。当没有附加图片时这是一个大问题,有时是这种情况。

我觉得我有一些模糊的设置错误配置或者除了我必须设置的网址之外还有一些字段可以让它工作但是除了标准的东西以外我找不到任何其他文件我是。请注意,我关闭了DeepLinking,这不适合我的应用程序,其中查看移动应用程序生成的内容的人不会在移动应用程序本身中查看它,而是在网页上查看。

这是来自对象调试器的JSON(名称已更改以保护无辜者;-)):

{
    "id": "this-replaced-for-security",
    "url": "this-replaced-for-security",
    "is_scraped": "false",
    "type": "dataparenting:babymilestone",
    "title": "First 'high five'",
    "image": {
        "url": "fbstaging://graph.facebook.com/staging_resources/xxx"
    },
    "created_time": "2014-08-06T23:43:02+0000",
    "updated_time": "2014-08-06T23:42:31+0000",
    "data": {
        "baby_name": "Mateo",
        "baby_is_male": "true",
        "completion_date": "2014-08-06T23:40:26+0000"
    }
}

以下是我在iOS应用中使用的代码:

            NSString *url = [NSString stringWithFormat:@"this-replaced-for-security", VIEW_HOST, achievement.objectId];
            NSMutableDictionary <FBOpenGraphObject> *object =
                [FBGraphObject openGraphObjectForPostWithType:@"dataparenting:babymilestone"
                                                        title:achievement.displayTitle
                                                        image:imageUrl
                                                          url:url
                                                  description:@""];
            object[@"al:ios"] = @"xxxxx";
            object[@"data"] = @{@"baby_name" : achievement.baby.name,
                    @"baby_is_male" : @(achievement.baby.isMale),
                    @"completion_date" : [achievement.completionDate asISO8601String],
            };
            if (achievement.comment) object[@"data"][@"comment"] = achievement.comment;
            if (achievement.standardMilestone.url) object[@"see_also"] = achievement.standardMilestone.url;

            [FBRequestConnection startForPostOpenGraphObject:object completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                if (!error) {
                    block([result objectForKey:@"id"], nil);
                } else {
                    block(nil, error);
                }
            }];

Image Showing Title With Link

1 个答案:

答案 0 :(得分:0)

如果它对任何未来的Google员工有所帮助,我就会想到这一点。

Facebook文档:&#34;对象URL是Facebook上的故事链接到新闻Feed时显示的内容。请注意,您引用的任何网址都必须低于您在应用信息中心设置的应用网站网址中设置的网址。托管对象不需要这样做。您还可以使用此URL设置与本机应用的深层链接。您可以在此参数中使用App Link主机的canonical_url。 &#34;

这意味着你需要设置&#34; App Domains&#34; “设置”下的字段,指向您要显示链接内容的网站域。但是,我实际上尝试了这个,但我得到了一个非常无用的错误消息,我无法保存应用程序(或字段)。秘诀是增加网站&#39;同样指向同一域的平台。添加网站后,我可以返回并添加App域,然后允许标题中的链接指向它们应该的位置。