0

Facebookページにリンクを自動的に投稿する必要がある小さなモジュールに取り組んでいます。次の設定を行いました。

  • Facebookページを作成しました(リンクを表示する人)
  • Facebookアプリを作りました
  • 次の権限を持つページ管理者プロファイルと Facebook ページの両方にアプリを追加しました: publish_stream、manage_pages

有効なアクセストークンを取得するために(今のところ手動で-推奨されていないことはわかっていますが、私の場合はうまくいきます)、次のことを行いました。

  1. ページ管理者としてログイン
  2. 次のページに移動します: https://developers.facebook.com/tools/access_token/
  3. ユーザー トークンをコピーし、次の URL を GET して非一時的にします。以前にコピーしたトークン}
  4. https://graph.facebook.com/me/accounts?access_token= {無期限アクセストークン}

ステップ 4 の後に取得した json から、関心のあるページのアクセス トークンをコピーし、次の C# コードを使用してリンクを投稿します。

try
        {
            dynamic data = new ExpandoObject();

            var fbm = message as FacebookMessage;

            data.access_token = ConnectionData.AuthenticationToken;
            data.message = fbm.Message;
            data.link = fbm.Link;
            data.name = fbm.Name;
            data.caption = fbm.Caption;
            data.description = fbm.Description;
            if (!String.IsNullOrEmpty(fbm.Icon))
            {
                data.picture = fbm.Icon;
            }
            var @params = ((ExpandoObject)data).ToUrl();

            var _currentRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(String.Format("https://graph.facebook.com/{0}/feed?{1}", _currentEndpoint.ObjectID, @params));
            _currentRequest.Method = "POST";
            _currentRequest.ContentType = "application/json; charset=utf-8";
            _currentRequest.UserAgent = "Mozilla/4.0 (compatible; Windows NT)";
            _currentRequest.Accept = "*/*";
            _currentRequest.CookieContainer = new CookieContainer();
            _currentRequest.KeepAlive = false;
            //_currentRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;

            //using (var sw = new StreamWriter(_currentRequest.GetRequestStream(), Encoding.UTF8))
            //{
            //    sw.Write(json);
            //}

            string json;
            var resp = _currentRequest.GetResponse();

            using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
            {
                json = sr.ReadToEnd();
            }

            var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            var output = jsonSerializer.Deserialize<dynamic>(json);

            return new OperationStatus();
        }
        catch (Exception ex)
        {
            return new OperationStatus { Exception = ex };
        }
    }

「_currentEndpoint.ObjectID」は、ページのオブジェクト ID です。POST が正常に完了し、管理者としてログインしている限り、管理者のウォールとページ自体の両方にリンクが投稿されていることがわかります。ログアウトするのが早ければ早いほど、投稿されたリンクも、そのページを気に入った他のユーザーも表示されません。

何を与える?ページの壁と、そのページを気に入った人の壁にリンクを表示するにはどうすればよいですか。ページでスパムをチェックしましたが、そこにリンクが表示されず、プライバシー設定からすべてが表示されているようです.

4

1 に答える 1

0

After reading this post: Posting a link to a page not showing up? I finally got it up and running. The problem seem to have been with the access token, but I still haven't figured out what went wrong: Here is what I did in the end:

That seem to have provided me the access token I needed to post visible links to everyone on the page wall.

于 2013-03-14T19:33:20.263 に答える