【问题标题】:How to publish checkins for a Facebook user如何为 Facebook 用户发布签到
【发布时间】:2012-01-12 13:42:30
【问题描述】:

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

【问题讨论】:

    标签: facebook appcelerator checkin


    【解决方案1】:

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

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

    以下是您向用户请求适当权限的方式:

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

    这是您将使用的示例 URL(使用 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 的属性,但一般方法是正确的。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 2018-10-14
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多