我有一个桌面应用程序(一个小游戏)必须能够在用户的墙上发表评论。就像“X赢得了对抗Y和Z的比赛”。
我一直在阅读任何文档和Facebook API,但我无法弄清楚。我已经理解了这样做的方法:使用访问令牌然后使用GraphAPI获取用户的信息,然后将其发布在他的墙上。
但是,所有的例子和文档都没有真正帮助我,它们只是其中的一部分。此外,Facebook正在改变这样做的方式......所以我很困惑。
所以我想知道如何真正做到这一点。我的意思是,最简单的方法是找到我。对于少数人来说,这是一个非常小的应用程序,是第一个测试应用程序。
感谢您的任何线索!
答案 0 :(得分:1)
为桌面应用程序执行身份验证比基于Web的应用程序更复杂。由于这是“第一个测试应用程序”,我强烈建议使用Facebook JavaScript SDK(http://developers.facebook.com/docs/reference/javascript/)将其开发为Web应用程序。一旦你可以在那里工作,那么转到Windows桌面应用程序会容易得多,因为现在你已经完成了身份验证部分(因为你的桌面应用程序将使用javascript SDK来授权用户)。 / p>
但如果你想跳入,请参阅:http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-First-Facebook-Application-v6.aspx
答案 1 :(得分:0)
最后,
我通过简单地不使用facebook SDK进行了真正的360转。有人告诉我,仅使用http请求发布是多么容易!并在另一篇文章的帮助下(http://stackoverflow.com/questions/6024912/asp-net-post-to-facebook-wall) 我想出了如何做到这一点。这是我做这个的简单代码。基本上,我使用WPF创建一个窗口,“用户”可以连接到Facebook,顶部还有一个textBox,用于显示我想要的东西......令牌或网络响应......最后,我有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的解决方案