1

我想发布Facebook地图附件的故事。我可以成功地发布故事,但附件不会显示为地图。 我正在使用Facebook C#SDK(http://facebooksdk.net/)。发布一个Facebook的故事,因为地图与C#不起作用

这是我设置的故事: enter image description here

自定义对象设置了所谓的地理定位的自定义属性,关于这一点我在我的故事的attachement配置reffer: enter image description here

这就是我如何设置FB post调用的参数:

parameters["location"] = new Dictionary<string, object>(); 
((Dictionary<string, object>)parameters["location"])["title"] = "Title"; 
((Dictionary<string, object>)parameters["location"])["geolocation:latitude"] = pokk.Location.Latitude.ToString(CultureInfo.InvariantCulture); 
((Dictionary<string, object>)parameters["location"])["geolocation:longitude"] = pokk.Location.Longitude.ToString(CultureInfo.InvariantCulture); 

故事发布成功,但这是它的样子: enter image description here

我希望你能帮助我..

Thanx提前! 迎接!

+0

我实现了一个Web应用程序类似的东西,它在时间线相同的显示问题。最好是你在这里创建一个错误报告:https://developers.facebook.com/x/bugs/created/看起来像fb行为,集合和故事仍然存在很多错误。 – Jurik

+0

你有没有机会看看解决方案 – Nico

回答

2

我花了最近几个小时试图诊断这个问题,并提出了一个解决方案,但代码更改颇为有趣。基本上,你可以做的第一件事情实际上是设置属性“位置”是必需的。您会注意到,一旦您将Graph API设置为因缺少必需属性而失败。

这是一个好兆头,这意味着提交的内容不完全正确。在Object Browser中挖掘并手动创建对象后,我想出了一个解决方案。现在值得注意的是,我使用dnyamicExpandoObjects而不是字典,但概念是相同的。查看评论代码

//create our location object 
dynamic locationData = new ExpandoObject(); 
locationData.title = "sample app testing " + DateTime.Now.ToString(); 

//create our geolocation object 
dynamic geoData = new ExpandoObject(); 
geoData.latitude = 37.416382; 
geoData.longitude = -122.152659; 
geoData.altitude = 42; //<-- important altitude figure 

//create our geo data item container and add the geoData object to the geolocation property 
dynamic geoDataItem = new ExpandoObject(); 
geoDataItem.geolocation = geoData; 

//set the data property of our location data to the geo data item container 
locationData.data = geoDataItem; 

//create our root object setting the location property to the location data object 
dynamic objItem = new ExpandoObject(); 
objItem.location = locationData; 

var response = context.Client.Post("me/<my_app_name>:<app_action>", objItem); 

真的,我们正在做的就是使用expando对象创建一个简单的结构。我个人被困在什么不知道如何完成GeoPoint运作。如果您注意到我们必须创建2个容器。

一个容器,所以我们可以在位置对象的data属性上设置geolocation属性。

最终的结构类似于

--- MyStory 
    --- location 
     --- title : 'Sample app testing....' 
     --- data 
      --- geolocation 
       --- latitude : 37.416... 
       --- longitude : -122.1526... 
       --- altitude : 42 

这似乎相当复杂,但这里是一个最终的输出预览。

enter image description here

+0

太棒了!感谢您的解决方案!这是工作!不知怎的,我错过了我的位置对象的“数据”标签......只是最后一个问题:我能否影响地图的缩放? – Nuker

+0

是的缩放是基于GeoPont的高度属性。在这个例子中是geoData.altitude。这会在地图上设置缩放高度 – Nico

+0

太糟糕了,我错过了赏金。哦,很高兴解决方案的作品。 – Nico