如何发布Facebook用户的签到

时间:2011-12-04 10:47:22

标签: facebook appcelerator checkin

我正在使用Appcelerator和Facebook API模块构建iOS应用程序。我需要找到一种代表用户发布签名的方法。用户必须能够在位置和/或特定FB页面进行登记。这可能吗?我可以发布状态消息,但我无法添加位置(地点)。

1 个答案:

答案 0 :(得分:3)

有可能 - 你需要使用Facebook的Graph API,可以通过Titanium.Facebook.requestWithGraphPath方法访问它。 This blog post描述了这是如何在iOS上完成的,但工作流程是相同的 - 虽然作者说Facebook的API最近发生了变化,所以YMMV - 我在Facebook的开发者资源中找不到任何明确的文档。

  • 要代表用户发布签到,您需要获得用户授予您应用的“publish_checkins”扩展权限
  • 获取用户设备的经度和纬度
  • 通过图谱API
  • 请求,查找用户所在位置附近的列表
  • 允许用户选择地点
  • 向Facebook Graph API发送POST请求,路径为“me / checkins”,其中包含PlaceID,用户坐标和可选标签(朋友ID)以及状态消息

以下是您向用户请求相应权限的方式:

Titanium.Facebook.permissions = ['publish_checkins'];
Titanium.Facebook.authorize();

以下是您使用的示例网址(使用Titanium.Network.createHTTPClient发出GET请求)来查找地点列表

https://graph.facebook.com/search?q=coffee&type=place&center=37.76,122.427&distance=1000

然后在表格视图中列出这些位置,当用户点击一个位置时,您可以POST以创建签到,假设您在适当命名的变量中具有该位置的ID及其坐标:

var data = {
    place: placeID
    coordinates: {
        latitude: latitude,
        longitude: longitude
    }
    message: message,
    tags: [
        // tagged users (optional)
    ]
};


Titanium.Facebook.requestWithGraphPath('me/checkins', data, 'POST', function(e) {
    if (e.success) {
        alert("Success! Returned from FB: " + e.result);
    } else {
        if (e.error) {
            alert(e.error);
        } else {
            alert("Unknown result");
        }
    }
});

如果API已更改,您可能需要调整发送给Facebook的属性,但一般方法是正确的。