0

私は、アプリケーションのタイムライン/フィード/Fb のウォールに何かを投稿しようとしてきましたが、1 日の大半は失敗し続けています。これはイライラしています。

私がやっていることは次のとおりです。単純なコンソール C# アプリを使用しています。これは、アプリケーションの壁に何かを投稿しようとしています (たとえば、基本的な Hello World! など)。

このスニペットは、アクセス トークンを取得する方法を示しています。

 private string _AccessToken;
        public string AccessToken
        {
            get
            {
                if (string.IsNullOrEmpty(_AccessToken))
                {
                    //_AccessToken = string.Format("{0}|{1}", Credentials.AppId, Credentials.AppSecret);
                    Logger.Debug("Attempting to retrieve the access token...");
                    dynamic result = ExecuteGet("oauth/access_token", new
                    {
                        client_id = Credentials.AppId, // my app id
                        client_secret = Credentials.AppSecret, // my app secret
                        grant_type = "client_credentials",
                        scope = "manage_pages,publish_actions,publish_stream"
                    }, false);

                    _AccessToken = result.access_token;
                }
                Logger.Debug("Operation succeeded, access token is : {0}", _AccessToken);
                return _AccessToken;
            }
        }

private object ExecuteGet(string path, object parameters)
        {
            return ExecuteGet(path, parameters, true);
        }

        private object ExecuteGet(string path, object parameters, bool useAccessToken)
        {
            try
            {
                Logger.Debug("Executing GET : {0}", path);
                var client = useAccessToken ? new FacebookClient(AccessToken) : new FacebookClient();
                return client.Get(path, parameters);
            }
            catch (FacebookApiException ex)
            {
                Logger.Error("GET Operation failed : {0}", ex.Message);
                throw;
            }
        }

そして、これは私が実際に何かを投稿しようとしている方法です:

public void PostToApplicationWall(string message)
        {
            string path = string.Format("/{0}/feed", Credentials.AppId);
            IDictionary<string, object> parameters = new Dictionary<string, object>()
            {
                { "description", "[DESCRIPTION] Facebook description..." },
                { "link", "http://tinyurl.org" },
                { "name", "[NAME] Facebook name..." },
                { "caption", "[CAPTION] Facebook caption..." },
                { "message", message }
            };

            dynamic result = ExecutePost(path, parameters);
        }

private object ExecutePost(string path, object parameters)
        {
            try
            {
                Logger.Debug("Executing POST : {0}", path);
                var client = new FacebookClient(AccessToken);
                return client.Post(path, parameters);
            }
            catch (FacebookApiException ex)
            {
                Logger.Error("POST Operation failed : {0}", ex.Message);
                throw;
            }
        }

ExecutePost() は AccessToken プロパティを使用することに注意してください。最初に貼り付けました。

私が得ているメッセージは次のとおりです: (OAuthException - #210) (#210) 件名はページでなければなりません

助けてください、私は何が間違っているのかわかりません。

4

2 に答える 2

0

Maciek さん、本当に自分のページに投稿したいだけなら、スタンドアロン アプリを作成するのが最も簡単な方法ではないかもしれません。PowerShell とhttp://facebookpsmodule.codeplex.comを試しましたか? このモジュールは許可を処理し、簡単なスクリプトでこの操作を実行できるようにします。

于 2013-03-25T18:49:24.910 に答える
0

2012 年 2 月 1 日以降、アプリ プロファイル ページは廃止されました。アプリ ページを作成する必要があります。ここを読んでください。

アプリ ページを作成したら、コードを次のように変更します。

string path = string.Format("/{0}/feed", Credentials.PageId);

また

string path = string.Format("/{0}/feed", Credentials.PageUsername);

[編集] ページへの投稿には、アプリ アクセス トークンの代わりにページ アクセス トークンが必要です。ページ アクセス トークンの取得方法については、こちらをご覧ください。

于 2013-03-25T08:30:09.710 に答える