2011-07-19 101 views
0

我使用的是Facebook的c#-sdk v5.0.50.0。我的silverlight應用程序的用戶需要一個選項,將我的軟件生成的信息發佈到他們的Facebook牆上。如何發佈到Silverlight應用程序的Facebook牆

我認爲SDK中的SilverlightInBrowser示例是我所需要的最接近的示例,它提示用戶獲取權限並讀取用戶信息。我已經知道該部分功能正常(但可以鏈接到任何您知道的完整工作示例)。

樣本應用程序使用

private string[] requestedFbPermissions = new[] { "user_about_me" }; 

我相信我將不得不改變,以使張貼在牆上,在這裏列出的權限之一 - http://developers.facebook.com/docs/reference/api/permissions/可能「publish_stream」將是我的猜測,我我無法測試,直到我得到張貼位工作。

下一步是寫這篇文章。我還沒有看到Silverlight版本,所以我稍微修改了一個非silverlight問題的答案,因爲silverlight稍有不同(例如異步回調)。我的代碼看起來像這樣:

private void fbpost_Click2(object sender, RoutedEventArgs e) 
    { 
     var client = new FacebookClient(fb.AccessToken); 

     dynamic parameters = new ExpandoObject(); 
     parameters.message = "test posting - ignore"; 
     parameters.link = "http://www.example.com/link"; 
     parameters.picture = "http://www.example.com/picture.jpg"; 
     parameters.name = "Test Post"; 
     parameters.caption = "Test Post Caption"; 
     parameters.description = "description here"; 
     parameters.actions = new 
     { 
      name = "View on www.example.com", 
      link = "http://www.example.com", 
     }; 
     parameters.privacy = new 
     { 
      value = "ALL_FRIENDS", 
     }; 
     parameters.targeting = new 
     { 
      countries = "US", 
      regions = "6,53", 
      locales = "6", 
     }; 
     client.PostCompleted += new EventHandler<FacebookApiEventArgs>(client_PostCompleted); 
     client.PostAsync("me/feed", parameters); 
    } 

    void client_PostCompleted(object sender, FacebookApiEventArgs e) 
    { 
     dynamic result = e.GetResultData(); 
    } 

但是發生的事情是,我得到一個錯誤調用client.PostAsync("me/feed", parameters);

嘗試通過安全透明的方法「SimpleJson.Reflection.CacheResolver.CreateDynamicMethod(System.String,System.Type的,系統System.Type. System.Type(System.String,System.Type,System.Type [],System.Type,Boolean)''訪問安全關鍵方法'System.Reflection.Emit.DynamicMethod..ctor'失敗。

+0

謝謝。我相信我的SDK網站上有最新的源代碼(來自最新的.zip)。我做了這個編輯(嘗試4次),將版本號從5.0.50.0遞增到5.0.53.0,以確保我得到了新的dll,現在我在SimpleJson.cs的第1597行得到了不同的錯誤,該行是'return delegate (object instance){return getMethodInfo.Invoke(instance,Type.EmptyTypes); };'並且錯誤是通過方法SimpleJson.Reflection.CacheResolver + <> c__DisplayClassa。 b__9(System.Object)'嘗試訪問方法'<> f__AnonymousType0'2 。 get_name()'失敗。「 –

回答

0

這是一個將在未來版本中修復的錯誤。 (它已經在我的內部代碼中得到修復)。

現在您需要獲取最新的源代碼,打開silverlight解決方案Facebook-SL4.sln並刪除名爲SIMPLE_JSON_REFLECTIONEMIT的符號。然後編譯它並使用該dll。

這是由於我們在內部調用的「安全關鍵方法」構造函數造成的。

+0

感謝Prabir,我可以證實這一點,並且遇到的後續問題現在已經解決,並且prabir已經修補了SDK,因此我能夠成功發佈到SL的牆上。在撰寫本文時,您需要自行獲取並構建最新的SDK源代碼更改集,而不是codeplex上的「穩定」版本,然後它應該可以很好地工作。 –

相關問題