2011-12-04 90 views
0

我正在使用Appcelerator和Facebook API模塊構建iOS應用。我需要找到一種代表用戶發佈登錄的方法。用戶必須能夠在位置和/或特定的FB頁面登記。這可能嗎?我可以發佈狀態消息,但我無法添加位置(地點)。如何爲Facebook用戶發佈簽到

回答

3

這是可能的 - 您需要使用Facebook的Graph API,它可以通過Titanium.Facebook.requestWithGraphPath方法訪問。 This blog post描述了這是如何在iOS上完成的,但工作流程是一樣的 - 雖然作者說Facebook的API最近已經改變,所以YMMV - 我在Facebook的開發人員資源中找不到任何明確的文檔。

  • 要發佈代表用戶的簽入,你需要有「publish_checkins」擴展權限用戶
  • 授予您的應用程序獲取用戶的設備的緯度和經度
  • 查找通過向Graph API請求用戶位置附近的地點列表
  • 允許用戶選擇地點
  • 向包含PlaceID,用戶座標等的路徑「me/checkins」的Facebook Graph API發送POST請求。和可選標籤(朋友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

然後列出一個表視圖這些地方,當用戶點擊一個,您張貼創建一個簽入,假設你有這個地方的ID,其coordi納茨,在適當命名的變量:

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的屬性,但一般的做法是正確的。

相關問題