Как я могу опубликовать фотографию на своей странице в фейсбуке с помощью API Graph Graph, используя консольное приложение? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу поделиться фотографией через Graph API, используя консольное приложение, но не могу.

    public static void Main(string[] args)
    {

        var facebookClient = new FacebookClient();
        var facebookService = new FacebookService(facebookClient);
        var getAccountTask = facebookService.GetAccountAsync(FacebookSettings.AccessToken);
        Task.WaitAll(getAccountTask);
        var account = getAccountTask.Result;
        Console.WriteLine($"{account.Id} {account.Name}");

        var postOnWallTask = facebookService.PostOnWallAsync(FacebookSettings.AccessToken,"Hello from C# .NET Core!");
        Task.WaitAll(postOnWallTask);
        //Console.WriteLine("Hellooooooo");
        RunAsync().Wait();
        //Console.WriteLine("byeeee");
        Console.ReadLine();
    }
    public static async Task RunAsync()
    {
        // Use HttpClient
        using (var client = new HttpClient())
        {

            string uri = "https://graph.facebook.com/v3.3/me/photos";

            //string link = "http://www.msdevz.com/news/article.aspx?id=5899&o=3";
            string picture = "https://images.unsplash.com/photo-1518791841217-8f162f1e1131?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&w=1000&q=80.png";
            string caption = "test photo";
            // Formulate querystring for graph post
            StringContent queryString = new StringContent("&picture=" + picture + "&caption=" + caption);

            // Post to facebook /{page-id}/feed edge

            var responsePost = "";
            try
            {
                HttpResponseMessage response = await client.PostAsync(new Uri(uri), queryString);
                if (response.IsSuccessStatusCode)
                {
                    Console.WriteLine("post is shared on your page");
                    // Get the URI of the created resource.
                    string postId = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(postId);
                    Console.ReadLine();
                }
            }
            catch (Exception ex)
            {
                responsePost = "Facebook Posting Error Message: " + ex.Message;
            }

        }
    }

Я думаю, что есть проблема с функцией postAsync. Я не получаю сообщение об ошибке, но этот код не публикует фотографии на моей странице.

1 Ответ

0 голосов
/ 10 июля 2019

Загрузка фотографии объясняется здесь: https://developers.facebook.com/docs/graph-api/reference/user/photos

В соответствии с этой страницей вам необходимо добавить фотографию в качестве параметра с помощью ключа 'url'.

Можете ли вы попробовать что-то вродеэто?

string uri = "https://graph.facebook.com/v3.3/me/photos";
string picture = "https://images.unsplash.com/photo-1518791841217-8f162f1e1131?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&w=1000&q=80.png";
var parameters = new Dictionary<string, string> { { "url", picture } };
var encodedContent = new FormUrlEncodedContent (parameters);
HttpResponseMessage response = await client.PostAsync(new Uri(uri), encodedContent);
...