Опубликовать на странице Facebook как страницу, а не как администратор с помощью Facebook C # SDK - PullRequest
4 голосов
/ 08 марта 2011

Я занимаюсь разработкой приложения на C #, которое управляет фан-страницей на Facebook и использует Facebook C # SDK.Я столкнулся с двумя проблемами, одна из которых связана с размещением сообщений на стене, а другая связана с созданием событий на фан-странице.

Можно ли разместить сообщение на стене фан-страницы как фан-страницу, а не как администратор?

Могу ли я программно создать событие на фан-странице (не как администратор, а как фан-страница), используя Facebook C # SDK?

Я просмотрел другие учебники по другим SDK, например, Facebook PHP SDK.PHP SDK позволяет создавать событие как фан-страницу, но в случае C # SDK создание события не дает никаких результатов.

Ответы [ 4 ]

7 голосов
/ 22 апреля 2011

Хорошо, я только что натолкнулся на то же самое.Для моих целей я разрешаю приложению публиковать на фан-странице FB в качестве фан-страницы.Таким образом, у меня может быть несколько пользователей, которые имеют доступ к приложению, но не имеют доступа к фан-странице, размещая ее как фан-страницу.Это работает для моих требований.

Во всяком случае, вот как я это сделал, используя C # Facebook SDK Beta V5.0.9.Первый шаг: убедитесь, что учетная запись пользователя, с которой вы пытаетесь опубликовать сообщение, может отправлять сообщения на фан-страницу и имеет разрешение делать это из приложения.

В большинстве случаев это похоже на сообщение VorTechS,немного больше разъяснений по этому поводу.

Dictionary<string,string> fbParams = new Dictionary<string,string>();
                fbParams["message"] = Title;
                fbParams["caption"] = string.Empty;
                fbParams["description"] = string.Empty;
                fbParams["req_perms"] = "publish_stream";
                fbParams["scope"] = "publish_stream";
                //Initialize Your Facebook Client in the manner that suits you, I did it by supplying a saved access token from a single users
                FacebookWebClient fbClient = new FacebookWebClient(<YOUR_ACCOUNT_ACCESS_TOKEN>);
                //Get the listing of accounts associated with the user
                dynamic fbAccounts = fbClient.Get("/me/accounts");

                //Loop over the accounts looking for the ID that matches your destination ID (Fan Page ID)
                foreach (dynamic account in fbAccounts.data) {
                    if (account.id == <DESTINATION_ID_OF_YOUR_FAN_PAGE>) {
                        //When you find it, grab the associated access token and put it in the Dictionary to pass in the FB Post, then break out.
                        fbParams["access_token"] = account.access_token;
                        break;
                    }
                }
                //Then pass your destination ID and target along with FB Post info. You're Done.
                dynamic publishedResponse = fbClient.Post("/" + <DESTINATION_ID_OF_YOUR_FAN_PAGE> + "/feed", fbParams);
1 голос
/ 03 июля 2013

в MVC4 и C # SDK, это моя цель

  [FacebookAuthorize("publish_stream")]
    public ActionResult PostNotification(FacebookContext context)
    {
        var dicParams = new Dictionary<string, object>();
        dicParams["message"] = "đang tập code cho facebook ~@@";
        dicParams["caption"] = "bbbbb";
        dicParams["description"] = "cccccc";
        dicParams["name"] = "http://www.facebook.com";
        dicParams["req_perms"] = "publish_stream";
        dicParams["scope"] = "publish_stream";
        string destinationID = context.UserId;
        context.Client.Post("/" + destinationID + "/feed", dicParams);
        return RedirectToAction("Index");
    }
1 голос
/ 15 июня 2011

Я хочу поблагодарить вас за ваш пост, это было действительно полезно.Для меня это все еще размещалось на моей странице в Facebook как ME (не как страница).Я думаю, что это просто способ получить токен.Хотя цикл foreach у меня не работал.Итак, я сделал это:

public void postFacebook(object sender, EventArgs e)
{
    //You will get your "myAccessToken" at this adress:
    //https://www.facebook.com/dialog/oauth?client_id=<YOUR_APP_ID>&redirect_uri=<THE_PAGE_YOU_WILL_RECEIVE_YOUR_TOKEN_AT>&scope=offline_access,manage_pages,publish_stream&response_type=token
    string myAccessToken = "<IN_THE_RETURNED_URL_BELOW>";
    string myPageId = "<YOUR_FAN_PAGE_ID>";

    Dictionary<string,string> fbParams = new Dictionary<string,string>();
    fbParams["message"] = "Testing 1 2 test";
    fbParams["caption"] = string.Empty;
    fbParams["description"] = string.Empty;
    fbParams["req_perms"] = "publish_stream";
    fbParams["scope"] = "publish_stream";
    //Initialize Your Facebook Client in the manner that suits you, I did it by supplying a saved access token from a single users
    Facebook.FacebookAPI fbClient = new Facebook.FacebookAPI(myAccessToken);
    //Get the listing of accounts associated with the user
    var fbAccounts = fbClient.Get("/me/accounts");

    //Loop over the accounts looking for the ID that matches your destination ID (Fan Page ID)
    foreach (var account in fbAccounts.Dictionary["data"].Array)
    {
        if (account.Dictionary["id"].String == myPageId)
        {
            //When you find it, grab the associated access token and put it in the Dictionary to pass in the FB Post, then break out.
            fbParams["access_token"] = account.Dictionary["access_token"].String;

            //Update the Access token (to post as the page). If you don't it will post as YOUR personal name.
            fbClient.AccessToken = fbParams["access_token"];
            break;
        }
    }



    //Then pass your destination ID and target along with FB Post info. You're Done.
    dynamic publishedResponse = fbClient.Post("/" + myPageId + "/feed", fbParams);
}

Кстати, вам понадобится этот SDK: SDK

1 голос
/ 08 марта 2011

Для публикации сообщения необходимо предоставить разрешение manages_pages и получить токен доступа из учетных записей для фан-страницы, используя результаты "/me/accounts".

Вот что я использую для публикации самого сообщения на фан-странице:

                            var dicParams = new Dictionary<string, object>();
                        dicParams["message"] = stSmContentTitle;
                        dicParams["caption"] = string.Empty;
                        dicParams["description"] = string.Empty;
                        dicParams["name"] = smContent.CmeUrl;
                        dicParams["req_perms"] = "publish_stream";
                        dicParams["scope"] = "publish_stream";

                        // Get the access token of the posting user if we need to
                        if (destinationID != this.FacebookAccount.UserAccountId)
                        {
                            dicParams["access_token"] = this.getPostingUserAuthToken(destinationID);
                        }
                        publishResponse = this.FacebookConnection.Post("/" + destinationID + "/feed", dicParams);
...