#眉標=特別報導 #副標=微網誌應用程式開發 #大標=初探Facebook SDK程式開發 #作者=文/圖 黃忠成 ============= Facebook SDK 3.0下載 ●http://msdn.microsoft.com/en-us/windows/ee388574.aspx ●http://facebooktoolkit.codeplex.com/ ================ ===<反灰>============= < ================ ===<反灰>============= ================ ===<反灰>============= SELECT name FROM group WHERE gid IN ( SELECT gid FROM group_member WHERE uid=''u1'' AND gid IN (SELECT gid FROM group_member WHERE uid=''u2'')) ================ ============= 程式1:Default.Master ................................ .................. ================ ============= 程式2:Default.Master.cs ................... using Facebook; using Facebook.Web; ............ public partial class Default : Facebook.Web.CanvasIFrameMasterPage { public Default() { RequireLogin = true; } } } ================ ============= 程式3:Default.aspx <%@ Page Title="" Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="FrameDemo.Frame1" %> <%@ Register Assembly="Facebook.Web" Namespace="Facebook.Web.FbmlControls" TagPrefix="fb" %> <%@ Register Assembly="Facebook.Web" Namespace="Facebook.Web" TagPrefix="cc1" %>
================ ============= 程式4:Default.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Facebook.Web; using Facebook.Rest; using Facebook.Session; using System.Configuration; namespace FrameDemo { public partial class Frame1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //建立Session,呼叫REST API前要先建立一個Session,估且將其想像為預先要求一個Cookie IFrameCanvasSession session = new IFrameCanvasSession(ConfigurationManager.AppSettings["APIKey"], ConfigurationManager.AppSettings["Secret"]); //準備REST API封裝物件 Api api = new Api(session); List list = new List(); //呼叫REST API取得朋友清單 var users = api.Friends.GetUserObjects(); //啟動Batch模式,REST API要求需要一個往返的網路動作,用Batch模式,可以將 //20次的API要求封裝成單一要求,一次取得20個回返值 api.Status.Batch.BeginBatch(); int i = 0; foreach (Facebook.Schema.user user in users) { //Batch上限是20個API要求 if (i % 20 == 0) { var result = api.Status.Batch.ExecuteBatch(true); if (result != null) { for (int j = 0; j < 20; j++) { if (((Facebook.Schema.status_get_response)result[j ]).user_status.Count > 0) list[i - 20 + j].latestMessage = ((Facebook.Schema.status_get_response)result[j]).user_status[0].message; } } api.Status.Batch.BeginBatch(); } list.Add(new FacebookInfo() { name = user.name, pic_small = user.pic_small, uid = (long)user.uid }); //這個呼叫可取得該朋友所發佈的內容,此處是Batch模式,只是將API呼叫裝入批次而已 api.Status.Get((long)user.uid, 1); i++; } var remainResult = api.Status.Batch.ExecuteBatch(true); if (remainResult != null) { for (int j = 0; j < remainResult.Count; j++) { if (((Facebook.Schema.status_get_response) remainResult[j]).user_status.Count > 0) list[(list.Count / 20) * 20 + j].latestMessage = ((Facebook.Schema.status_get_response) remainResult[j]).user_status[0].message; } } GridView1.DataSource = list; GridView1.DataBind(); } } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { } } public class FacebookInfo { public string name { get; set; } public string pic_small { get; set; } public string latestMessage { get; set; } public long uid { get; set; } } } ================ ============= 程式5:Web.config ................ ................... ================