如何从我的WP7应用程序发布状态更新到Facebook?

问题描述:

嗨我写一个应用程序,允许用户发布应用程序内的状态更新,我相信ive得到身份验证正确工作的登录,我只是不知道如何去发布状态更新。任何代码/示例/教程如何去做这将是太棒了,这是我迄今为止的验证代码。如何从我的WP7应用程序发布状态更新到Facebook?

public partial class FacebookAuth : PhoneApplicationPage 
     { 
      private string _accessToken; 
      private WebBrowser _webBrowser; 

      public FacebookAuth() 
      { 
       InitializeComponent(); 
       _webBrowser = new WebBrowser(); 
       this.Loaded += new RoutedEventHandler(FacebookAuthPage_Loaded); 
      } 

      void FacebookAuthPage_Loaded(object sender, RoutedEventArgs e) 
      { 
       //Get this from the facebook 
       string appId = "XXXXXXXXXXXXXXX"; 
       string[] extendedPermissions = new[] { "publish_stream", "offline_access", "user_groups" }; 

       var oauth = new FacebookOAuthClient { AppId = appId }; 
       //Telling the Facebook that we want token as response 
       //and we are using touch enabled device 
       var parameters = new Dictionary<string, object> 
         { 
          { "response_type", "token" }, 
          { "display", "touch" } 
         }; 
       //If there's extended permissions build the string and set it up 
       if (extendedPermissions != null && extendedPermissions.Length > 0) 
       { 
        var scope = new StringBuilder(); 
        scope.Append(string.Join(",", extendedPermissions)); 
        parameters["scope"] = scope.ToString(); 
       } 
       //Create the login url 
       var loginUrl = oauth.GetLoginUrl(parameters); 
       //Add webBrowser to the contentPanel 
       ContentPanel.Children.Add(_webBrowser); 
       _webBrowser.Navigated += webBrowser_Navigated; 
       //Open the facebook login page into the browser 
       _webBrowser.Navigate(loginUrl); 
      } 

      void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) 
      { 
       FacebookOAuthResult result; 
       //Try because there might be cases when user input wrong password 
       if (FacebookOAuthResult.TryParse(e.Uri.AbsoluteUri, out result)) 
       { 
        if (result.IsSuccess) 
        { 
         _accessToken = result.AccessToken; 
         MessageBox.Show(_accessToken); 
         //Hide the browser controller 
         _webBrowser.Visibility = System.Windows.Visibility.Collapsed; 
        } 
        else 
        { 
         var errorDescription = result.ErrorDescription; 
         var errorReason = result.ErrorReason; 
         MessageBox.Show(errorReason + " " + errorDescription); 
        } 
       } 
      } 

      private void PostBtn_Click(object sender, RoutedEventArgs e) 
      { 

      } 
     } 
    } 

要发布一个状态,做一个HTTP POST到/me/feed与所谓的“消息”后的参数,它的价值是认证用户发布的内容。

使用FacebookClient

var client = new FacebookClient(user_access_token); 
dynamic parameters = new ExpandoObject(); 
parameters.message = "Hello World!" 
dynamic post_id = client.Post("/me/feed", parameters); 

参见:http://blog.prabir.me/post/Facebook-CSharp-SDK-Making-Requests.aspx