Mam aplikację komputerową (małą grę), która musi być w stanie publikować komentarze na tablicy użytkownika. Na przykład „X wygrał turniej z Y i Z”.

Czytałem jakąkolwiek dokumentację i Facebook API, ale nie mogę się domyślić. Rozumiem, jak to zrobić: za pomocą tokena dostępu uzyskaj informacje o użytkowniku za pomocą GraphAPI, a następnie możesz je opublikować na swojej ścianie.

Ale wszystkie przykłady i dokumentacja tak naprawdę mi nie pomogły, są tylko częścią. Co więcej, Facebook zmienia sposób robienia tego… więc pomyliłem się.

Więc chciałbym wiedzieć, jak to naprawdę zrobić. Najłatwiej znaleźć dla mnie sposób. To naprawdę mała aplikacja dla kilku osób, rodzaj pierwszej aplikacji testowej.

Dzięki za każdą wskazówkę!

0
castors33 6 marzec 2012, 20:27

2 odpowiedzi

Najlepsza odpowiedź

Wreszcie,

Zrobiłem prawdziwy obrót o 360 stopni, po prostu nie używając facebook SDK. Ktoś powiedział mi, jak łatwo było publikować tylko za pomocą żądań http! I z pomocą innego posta (http://stackoverflow.com/questions/6024912/asp-net-post-to-facebook-wall) wymyśliłem, jak to zrobić. Oto mój mały prosty kod do tego. Zasadniczo użyłem WPF do stworzenia okien, w których „użytkownik” mógłby połączyć się z Facebookiem, a na górze znajduje się również pole tekstowe do pokazywania mi rzeczy, których chcę ... token lub odpowiedź sieciowa ... w końcu miałem 2 przyciski : pierwszy loguje się do facebooka, drugi tworzy post na facebooku...jest kod w 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);            
        }
    }
}

I Window1.xaml dla 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>

Wszystko, co musisz zrobić, to utworzyć nowy prodjet WPF i zapisać te wiersze w plikach. Musisz również zmienić identyfikator aplikacji i identyfikator użytkownika. Użyłem mojego do testowania, ale kodowanie w celu dynamicznego znalezienia identyfikatora użytkownika jest naprawdę proste.

Mam nadzieję, że to ci pomoże, nawet jeśli nie jest to rozwiązanie przy użyciu facebookSDK

0
castors33 16 marzec 2012, 01:04

Uwierzytelnianie aplikacji klasycznej jest bardziej złożone niż w przypadku aplikacji internetowej. Ponieważ jest to „pierwsza aplikacja testowa”, gorąco sugeruję rozwijanie jej jako aplikacji internetowej przy użyciu zestawu Facebook JavaScript SDK (http://developers.facebook.com/docs/reference/javascript/). Gdy już wszystko będzie działać, przejście do aplikacji komputerowej dla systemu Windows będzie znacznie łatwiejsze, ponieważ teraz masz już opracowaną część dotyczącą uwierzytelniania (ponieważ Twoja aplikacja komputerowa będzie używać pakietu SDK javascript do uwierzytelniania użytkownika).

Ale jeśli chcesz po prostu wskoczyć, zobacz: http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-First-Facebook-Application-v6.aspx

1
DMCS 7 marzec 2012, 00:09