在使用PHP SDK以编程方式创建事件时,如何显示场地的地图?

时间:2012-05-29 21:00:46

标签: php facebook facebook-graph-api

当我使用图形api创建活动时,我需要指定场地,我还想显示地图。

我做

$fb_event['name'] = "THis is to test latitude";
$fb_event['description'] = "And longitude!!!!";
$fb_event['start_time'] = date( "c", Ai1ec_Facebook_Event::get_facebook_start_time($event->start));
$fb_event['location'] = "Where you want";
$fb_event['street'] = "Via andrea del sarto 9";
$fb_event['city'] = "Milan";
$fb_event['latitude'] = 45.444975793404;
$fb_event['longitude'] = 9.2119209654715;

$facebook = $this->facebook_instance_factory();
try {
    $result = $facebook->api( "/me/events", "POST", $fb_event );
} catch (FacebookApiException $e) {
    fb($e);
}

这会生成this event,显示正确的街道和城市,但没有地图。如果我编辑事件并保存,则会正确地使用街道和城市显示“魔法”地图。

在任何情况下都会忽略纬度和经度。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

如果您在图谱API资源管理器中比较两个测试事件,您会发现事件ID 239298922846828没有填充其纬度和经度,而245655182207213则会填充。我假设245655182207213是你编辑过的一个事件。

查看代码,您似乎正在按照文档中的描述执行所有操作。但是,我发现所描述的内容并不总是有效。

我所看到的是,Facebook内部发生的事件发生在已知场所,不再允许您指定地址。相反,他们所保存的只是Facebook中的一个场地ID,然后您可以钻取以获取地址等。

看看one of my events。对于此活动,无法从Facebook内编辑此位置的详细信息,也无法通过API调用返回事件地点详细信息。我正在使用API​​将事件详细信息提取到外部网站。这种变化让我感到沮丧。

我在4月下旬开始看到这种行为。我没有找到任何宣布这一变化的官方文件。

当出现一些文档时,我期望新的活动场地工作流程将是:

  • 查询您的活动所在的区域,以查看是否已有场地。
    • 如果是,请保存其ID。
    • 如果没有,请为您的场地创建一个新的社区页面并保存其ID。
  • 使用此ID填充活动地点。

答案 1 :(得分:0)

最后这是一个已知的facebook bug

https://developers.facebook.com/bugs/173095916131752

答案 2 :(得分:0)

使用相同参数创建时的两种不同格式。

通过gql创建事件时

{
  "id": "xxxxxxxxxxxxxx", 
  "owner": {
    "name": "xxxxxxxxxx", 
    "id": "xxxxxxxxx"
  }, 
  "name": "W1112", 
  "start_time": "2013-10-22", 
  "is_date_only": true, 
  "location": "Tulsa, OK, United States", 
  "venue": {
    "latitude": 36.131388888889, 
    "longitude": -95.937222222222, 
    "street": "", 
    "zip": "", 
    "id": "109436565740998"
  }, 
  "privacy": "SECRET", 
  "updated_time": "2013-09-19T12:23:26+0000"
}





When create event through fb
{
  "id": "xxxxxxxxxxxxxx", 
  "owner": {
    "name": "xxxxxx", 
    "id": "xxxxxxxx"
  }, 
  "name": "1234", 
  "start_time": "2013-10-09T21:26:00+1100", 
  "end_time": "2013-10-25T00:26:00+1100", 
  "timezone": "Australia/Sydney", 
  "is_date_only": false, 
  "location": "Maroubra Junction", 
  "venue": {
    "latitude": -33.940804216453, 
    "longitude": 151.23876752992, 
    "city": "Maroubra", 
    "state": "NSW", 
    "country": "Australia", 
    "id": "153993547968514", 
    "street": "832 anzac Parade ", 
    "zip": "2035"
  }, 
  "privacy": "SECRET", 
  "updated_time": "2013-09-19T10:50:14+0000"
}