2012-01-04 5 views
0

Facebookのファンページがあり、このファンページからイベントを作成できるデスクトップアプリケーションを作成しようとしていますが、アクセストークン私はaccesstokenを持っていたら、私は間違っていないよ場合は、ユーザーのアクセス権が...私はCodePlexのと、以下の機能からfacebookSDKを使用してイベントを作成することができます。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; 
     } 

私はこのようにそれを試してみましたが、それは明らかに動作しませんでした。

私の質問

いつもアプリケーションが必要ですか?はいの場合は、既存のファンページにどのように接続すればよいですか? ユーザー権限はどこで設定しますか?そして、どのように私はユーザーとログインするのですか?

私はちょっとドキュメントが少し曖昧だと思っています:s私の質問がばかだと申し訳ありません。

助けてください/擬似コードありがとう!私はApp Engineアプリケーションでイベントを作成するためにBatchFBを使用しています

答えて

0

、それは私のために動作し、ここでコード

// 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で、クライアント側でトークンを生成し、それをサーバに渡します。私はBatchFBが画像を投稿しようとすると、バイナリパラメータをサポートするために取得することはできませんので

NewFeedItemがbatchFBのサイトを参照して、長い変数を定義するだけのクラス..ですということで

、私はRestFBへの切り替えを考えています。また、RestFBはより良く文書化されています。彼らは関連プロジェクトであり、しばしばお互いを参照しているようです。

私はVenueデータをまだ追加していませんが、GraphAPIが機能するためにはトップレベルのパラメータである必要があります。つまり、場所、プライバシーなどと同じレベルのストリート、シティ、州を追加してください。 イベントを読むとき、会場のパラメータが表示されますが、作成時にトップレベルにする必要があります。名前とstart_time、唯一の必要なパラメータを追加し、それが動作したらそれに追加します。

-ジョンゲンティリン

関連する問題