2012-03-06 64 views
0

我已經有一個桌面應用程序(一個小遊戲),它必須能夠在用戶的牆上發表評論。像「X贏得了Y和Z的比賽」。facebook sdk c#在用戶的牆上張貼

我一直在閱讀任何文檔和Facebook API,但我無法弄清楚。我已經理解了這樣做的方式:使用訪問令牌,然後使用GraphAPI獲取用戶的信息,然後將其發佈到他的牆上。

但是,所有的例子和文檔沒有真正幫助我,他們只是一部分。此外,Facebook正在改變做法......所以我感到困惑。

所以我想知道如何真正做到這一點。我的意思是,最簡單的方法是找到我。對於少數人來說,這是一個非常小的應用程序,這是第一個測試應用程序。

感謝您的任何線索!

+0

解決你試過在爲「後發佈」給出的例子http://facebooksdk.codeplex.com/wikipage?title=Code% 20Examples&referTitle =文檔 – scibuff 2012-03-06 16:34:38

+0

我沒有,我會嘗試它本週謝謝 – castors33 2012-03-13 19:22:54

+0

,但它不解釋如何獲得令牌 – castors33 2012-03-13 19:35:15

回答

0

最後,

我通過簡單地不使用Facebook的SDK做了一個真正的360度旋轉。有人告訴我僅僅使用http請求發佈是多麼容易!並與另一篇文章的幫助(http://stackoverflow.com/questions/6024912/asp-net-post-to-facebook-wall) 我想出瞭如何做到這一點。這是我的簡單代碼。基本上,我使用WPF來創建一個窗口,其中「用戶」可以連接到Facebook,還有一個頂部的文本框,用於顯示我想要的東西...令牌或Web響應......最後,我有2個按鈕:在Facebook,第二個讓Facebook上的帖子第一日誌...有在Window1.xaml.cs

using System; 
using System.Text; 
using System.Windows; 
using System.Net; 
using System.IO; 

namespace HDI_WPF_WebBrowser_cs 
{ 
    /// <summary> 
    /// Interaction logic for Window1.xaml 
    /// </summary> 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
     } 
     private void btnOnline_Click(object sender, RoutedEventArgs e) 
     { 
      //dont forget to change the appID 
      webOutput.Navigate(new Uri("https://www.facebook.com/dialog/oauth?client_id=APPID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token")); 
     } 

     private void btnCustom_Click(object sender, RoutedEventArgs e) 
     { 
      string adresseWeb = webOutput.Source.ToString(); 

      string token = adresseWeb.Remove(0, adresseWeb.IndexOf("#access_token=") + 14); 

      token = token.Remove(token.IndexOf("&expire")); 

      txtInput.Text = token; 
      //dont forget to change the userID 
      var url = string.Format("https://graph.facebook.com/USERID/feed?access_token=" + token); 

      var req = WebRequest.Create(url); 
      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-urlencoded"; 

      string postData = "'access_token='" + token 
          + "'&message=Testing testing"; 

      byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
      var stream = req.GetRequestStream(); 
      stream.Write(byteArray, 0, byteArray.Length); 
      stream.Close(); 

      WebResponse response = req.GetResponse(); 
      txtInput.Text = ((HttpWebResponse)response).StatusDescription; 
      stream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(stream);    
     } 
    } 
} 

和Window1.xaml的代碼,爲WPF

<Window x:Class="HDI_WPF_WebBrowser_cs.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="500" Width="600"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="2*" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="Auto" /> 
     </Grid.RowDefinitions> 
     <TextBlock Grid.Column="0" Grid.Row="0" Text="Input:" HorizontalAlignment="Right" /> 
     <TextBox x:Name="txtInput" Background="Bisque" Grid.Row="0" Grid.Column="1" /> 
     <WebBrowser x:Name="webOutput" Grid.Row="1" Grid.ColumnSpan="2" /> 
     <StackPanel Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal"> 
      <Button x:Name="btnOnline" Content="Load Online" Click="btnOnline_Click" /> 
      <Button x:Name="btnCustom" Content="Load Custom" Click="btnCustom_Click" /> 
     </StackPanel> 
    </Grid> 
</Window> 

您所要做的就是創建一個新的WPF prodjet並在文件中寫入這些行。你也必須改變appID和userID。我用我的測試,但它非常簡單,編碼爲danamicly找到userID。

我希望它能幫助你,即使是不使用facebookSDK

1

對桌面應用程序進行身份驗證比對基於Web的應用程序更復雜。由於這是「第一個測試應用程序」,我強烈建議使用Facebook JavaScript SDK(http://developers.facebook.com/docs/reference/javascript/)將其開發爲一個Web應用程序。一旦你可以在那裏工作,那麼去一個Windows桌面應用程序會容易得多,因爲現在你已經得到了驗證部分(因爲你的桌面應用程序將使用javascript SDK來授權用戶)。

但是,如果你想只跳,請參閱:http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-First-Facebook-Application-v6.aspx

+0

你的意思是讓一個真正的網站或只有一個網站與我的電腦上的HTML頁面是足夠的? – castors33 2012-03-12 21:29:45

+0

你當然可以在本地測試它。只是習慣於認證的方式,因爲您以後將用於C#桌面應用程序 – DMCS 2012-03-13 14:42:14

+0

我嘗試過這種方式,但我無法正常工作......在Facebook的JavaScript測試頁上我的代碼工作正常,但是當我在本地嘗試時,它永遠不會起作用......我不明白爲什麼。我需要更多東西嗎?我的代碼很簡單:打開窗口時下載Facebook SDK C#。然後嘗試發佈在Facebook上的東西......但這一步從來沒有工作......基本上......調用3個函數:FB.init,一個下載SDK的函數,最後是FB.ui – castors33 2012-03-13 19:25:02