9
votes

Le moyen le plus simple de poster sur un mur de page Facebook avec C #!

J'ai une configuration de page de fans pour ma société.

Je veux automatiser la publication de mises à jour régulières sur le mur de cette page de mon application de bureau C #.

  • Quelle bibliothèque C # Facebook est la plus simple?

  • Comment puis-je acquérir facilement le jeton d'accès pour cette page?

  • Quel est l'extrait de code le plus concis qui me permettra simplement de poster sur le mur?

    J'ai lu à travers tous les documents et des millions de poteaux Stackoverflow et Blog et tout semble très compliqué. Sûrement ça ne peut pas être si difficile ..

    J'ai configuré une "application" dans Facebook qui possède sa propre identification d'app, une clé API et une application d'application, etc.


1 commentaires

Je peux être obsolète, mais cela ressemble à une hypothèse similaire à celle que j'ai faite lorsque j'ai abordé ce problème; Ce n'est pas plus facile car vous ne voulez que vous accéder à une page, c'est à vous (votre client). Vous devez toujours construire l'infrastructure (contemplez la connexion Facebook, la permission de la demande, gérer la redirection du jeton d'authentification), qui pourrait fonctionner pour un utilisateur arbitraire, même si vous ne le faites qu'une fois, pour vous-même comme administrateur. Ce n'est pas trop mauvais, mais je ne pense pas qu'il y ait une doublure facile pour le faire, vous devez faire toute l'authentification.


3 Réponses :


10
votes

@aaron - La meilleure bibliothèque est la Facebook C # SDK. Je l'utilise tous les jours ... accordé que je suis biaisé alors que mon entreprise l'écrit - mais c'est une bibliothèque dynamique et avec le taux de mises à jour de Facebook (tous les mardi), il convient bien au développement évolutif.

http://facebooksdk.codeplex.com/

Je ne vais pas entrer dans l'authentification avec elle - comme sur CodePlex Il y en a beaucoup exemples: http://facebooksdk.codeplex.com/wikipage?title=code%20Examples&referringtitle=documentation Mais faire un message à une page, après avoir authentifié et avoir un jeton d'accès, le code serait quelque chose comme ceci: xxx

espère que cela aide cela aide.


3 commentaires

Merci Joey. Il s'est avéré que j'ai fini par trouver et utiliser votre bibliothèque. Ouais, il avait l'air le mieux comparé aux autres et les nombreux exemples inclus dans le package de téléchargement ont été très utiles. J'ai fini par modifier le projet d'exemple "CswinformSaThTool" et a été capable d'obtenir le jeton d'accès correct assez rapidement. Ensuite, avec quelques autres modifications, j'ai reçu l'appel réel jusqu'à 2 lignes de code! Ça marche vraiment bien. Merci beaucoup.


@Aaron, "était capable d'obtenir le jeton d'accès correct assez rapidement" - Comment as-tu fini ça? Merci!


Je reçois cette erreur lorsque vous avez publié un message à la page. (OauthException - # 200) (# 200) L'utilisateur n'a pas autorisé l'application à effectuer cette action. Qui est l'utilisateur dans ce contexte? Quelqu'un peut-il m'aider à résoudre ce problème. J'ai même ajouté des autorisations avant d'obtenir le jeton d'accès



9
votes

Je pose cela en raison d'un manque de bonnes informations sur Internet qui m'a conduit à passer plus de temps que nécessaire. J'espère que cela profitera aux autres. La clé est l'ajout et l'étendue = manage_pages, hors ligne_access, publie_stream à l'URL.

class Program
{
    private const string FacebookApiId = "apiId";
    private const string FacebookApiSecret = "secret";

    private const string AuthenticationUrlFormat =
        "https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials&scope=manage_pages,offline_access,publish_stream";

    static void Main(string[] args)
    {
        string accessToken = GetAccessToken(FacebookApiId, FacebookApiSecret);

        PostMessage(accessToken, "My message");
    }

    static string GetAccessToken(string apiId, string apiSecret)
    {
        string accessToken = string.Empty;
        string url = string.Format(AuthenticationUrlFormat, apiId, apiSecret);

        WebRequest request = WebRequest.Create(url);
        WebResponse response = request.GetResponse();

        using (Stream responseStream = response.GetResponseStream())
        {
            StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
            String responseString = reader.ReadToEnd();

            NameValueCollection query = HttpUtility.ParseQueryString(responseString);

            accessToken = query["access_token"];
        }

        if (accessToken.Trim().Length == 0)
            throw new Exception("There is no Access Token");

        return accessToken;
    }

    static void PostMessage(string accessToken, string message)
    {
        try
        {
            FacebookClient facebookClient = new FacebookClient(accessToken);

            dynamic messagePost = new ExpandoObject();
            messagePost.access_token = accessToken;
            //messagePost.picture = "[A_PICTURE]";
            //messagePost.link = "[SOME_LINK]";
            //messagePost.name = "[SOME_NAME]";
            //messagePost.caption = "my caption"; 
            messagePost.message = message;,
            //messagePost.description = "my description";

            var result = facebookClient.Post("/[user id]/feed", messagePost);
        }
        catch (FacebookOAuthException ex)
        {
             //handle something
        }
        catch (Exception ex)
        {
             //handle something else
        }

    }


}


2 commentaires

Salut Justin. Merci pour cela, je me demandais si vous pouviez aider. J'essaie d'écrire un emploi pour quartz.net qui publie un aliment de page (dont je suis administrateur) sur une base quotidienne. Il semble que cela soit possible, mais je reçois un "L'utilisateur n'a pas autorisé l'application à effectuer cette action" OAuth Exception. J'imagine que c'est parce que pour les paramètres de l'application Facebook elle-même. Des idées comment elles doivent être définies? Tout très déroutant. Les applications FB ne semblent pas vraiment conçues pour ce type d'automatisation. Merci d'avance, Tom


EDIT: des trucs déroutants. Voir ici: développeurs.facebook.com/docs/reference/api/page - Ensuite, allez ici: développeurs.facebook.com/tools/explorer/?method= Obtenez et ajoutez vos comptes [UserID] / Comptes à l'URL GET, puis cliquez sur Accédez à Jeton et activez la gestion_pages. Convolué, mais je suppose que pour une bonne raison.