2012-01-04 100 views
0

我有一個Facebook粉絲專頁,我試圖讓這可以通過這個粉絲頁面創建活動桌面應用程序創建事件,但我無法理解故事的結局如何與存取權限令牌,身份證,用戶權限...如果我沒有記錯的話,一旦我有我可以創建一個使用facebookSDK從CodePlex上和下面的函數的事件的accessToken:桌面應用,通過Facebook頁面

public string CreateEvent(string accessToken) 
     { 
      FacebookClient facebookClient = new FacebookClient(accessToken); 
      Dictionary<string, object> createEventParameters = new Dictionary<string, object>(); 
      createEventParameters.Add("name", "My birthday party)"); 
      createEventParameters.Add("start_time", DateTime.Now.AddDays(2).ToUniversalTime().ToString()); 
      createEventParameters.Add("end_time", DateTime.Now.AddDays(2).AddHours(4).ToUniversalTime().ToString()); 
      createEventParameters.Add("owner", "Balaji Birajdar"); 
      createEventParameters.Add("description", " (a long description can be used here..)"); 

      //Add the "venue" details 
      JsonObject venueParameters = new JsonObject(); 
      venueParameters.Add("street", "dggdfgg"); 
      venueParameters.Add("city", "gdfgf"); 
      venueParameters.Add("state", "gfgdfgfg"); 
      venueParameters.Add("zip", "gfdgdfg"); 
      venueParameters.Add("country", "gfdgfg"); 
      venueParameters.Add("latitude", "100.0"); 
      venueParameters.Add("longitude", "100.0"); 
      createEventParameters.Add("venue", venueParameters); 

      createEventParameters.Add("privacy", "OPEN"); 
      createEventParameters.Add("location", "fhdhdfghgh"); 

      Add the event logo image 
      FacebookMediaObject logo = new FacebookMediaObject() 
      { 
       ContentType = "image/jpeg", 
       FileName = @"C:\logo.jpg" 
      }; 
      logo.SetValue(File.ReadAllBytes(logo.FileName)); 
      createEventParameters["@file.jpg"] = logo; 

      JsonObject resul = facebookClient.Post("/me/events", createEventParameters) as JsonObject; 
      return resul["id"].ToString(); 
     } 

我總是需要一個應用程序做到這一點?

我有一個測試應用程序,我可以用從中獲得的訪問令牌:

public string getToken(string strURL) 
     { 
      string strURL = "https://graph.facebook.com/oauth/access_token?client_id=149585851811979&client_secret=blablablablabalalbal&grant_type=client_credentials"; 

      Uri Uri = new Uri(strURL); 
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Uri); 
      HttpWebResponse HWResponse = (HttpWebResponse)request.GetResponse(); 
      StreamReader sr = new StreamReader(HWResponse.GetResponseStream()); 
      string token = sr.ReadToEnd(); 
      sr.Close(); 
      token = token.Replace("access_token=", ""); 
      return token; 
     } 

我試過這樣,但它顯然沒有奏效。

所以我的問題:

我是否總是需要一個應用程序?如果是的話,我如何將它連接到我現有的粉絲頁面? 我在哪裏設置我的用戶權限?那我該如何登錄用戶?

我只是覺得文檔有點含糊:如果我的問題是愚蠢的Š對不起。

任何幫助/僞表示讚賞!

回答

0

我使用BatchFB以創建App Engine應用程序的事件,它的工作對我來說,這裏是代碼

// Some Date math that is from my App, but I am using Joda DateTime for output 
    // formatting.. I have found that if the start_time is malformed by FB standards it will 
    // to create an event, and give you an eventid, but the event never really gets created. 
    long hour = { your data } 
    DateTime start_time = new DateTime(d).plusHours((int)hour); 
    String stime = start_time.toString(ISODateTimeFormat.dateTime()); 

    Batcher batcher = new FacebookBatcher(token); 
    Later<NewFeedItem> event = batcher.post(
     "/events", NewFeedItem.class, 
     new Param("name", edata.getStringProperty(EventData.Schema.Name)), 
     new Param("start_time", stime) 
); 
    long eventid = event.get().id; 

我生成與FBJS客戶端令牌,並將其傳遞給服務器。

NewFeedItem僅僅是定義一個長變量類,見batchFB的網站..

雖這麼說,我想切換到RestFB,因爲我不能讓BatchFB支持二進制參數,試圖發表圖片。此外RestFB記錄更好..他們似乎是相關的項目,並經常互相提及。

我不是在會場數據相加,但我已閱讀,對於GraphAPI工作,他們需要的是最高級別的參數。即在街道,城市,國家在同一水平位置和隱私.. 添加當您嘗試讀取事件它會在場地內的參數,但它需要在創建時是頂級..也退回到只使用名稱和start_time,這是唯一需要的參數,並在其工作後添加到該參數中。

-John Gentilin