在Facebook页面上分享发布为Facebook App

时间:2015-03-23 04:16:58

标签: c# asp.net facebook

我一直在使用facebook api在Facebook页面上分享帖子作为facebook app。我创建了facebook app。 该帖子也得到了共享,但问题是,它没有被发布为Facebook应用程序。相反,它要求用户登录,然后它作为用户共享帖子。关于我如何分享Facebook Facebook应用程序的任何帮助将不胜感激,因为我已经尝试了很长时间。 Thanx提前啦。 我一直使用的代码如下。

using Facebook;

  protected void CheckAuthorization()
    {
        string authorizationCode = Request.QueryString["code"];
        string access_token = Facebook_GetAccessToken(authorizationCode);
        FacebookShare(access_token);
    }

     private string Facebook_GetAccessToken(string pAuthorizationCode)
    {
        string urlGetAccessToken = "https://graph.facebook.com/oauth/access_token";
        urlGetAccessToken += "?client_id=my app id";
        urlGetAccessToken += "&client_secret=app secret";
        urlGetAccessToken += "&redirect_uri=" + Facebook_GetRedirectUri();
        urlGetAccessToken += "&code=" + pAuthorizationCode;

        string responseData = RequestResponse(urlGetAccessToken);
        if (responseData == "")
        {
            return "";
        }
        NameValueCollection qs = HttpUtility.ParseQueryString(responseData);
        string access_token = qs["access_token"] == null ? "" : qs["access_token"];

        return access_token;
    }

    protected void FacebookShare(string token)
    {
        if (token != null)
        {
            Int64 transactionid = Convert.ToInt64(Cache["transactionid"]);
            string app_id = "my app id";

            string app_secret = "app secret";

            string scope = "offline_access,read_stream,publish_actions,publish_stream,manage_pages,status_update";
            dynamic parameters = new ExpandoObject();

            parameters.link = "my website link";
            parameters.name = "my project name";
            parameters.picture= "my website logo";
            var client = new FacebookClient(token);
            client.Post("/1374775846180409/feed", parameters); // this is my facebook page id where I want to share post.
            Response.Cookies["transaction"].Expires = DateTime.Now;
        }
        else
        {
        }
    }

关于上述代码,我成功获得了Facebook授权代码。

1 个答案:

答案 0 :(得分:5)

您只能要求已登录您应用的用户在Facebook上发帖,因此不允许发布应用。 您将需要一个页面访问令牌作为页面发布,该页面有权修改属于Facebook页面的数据。要获取页面访问令牌,您需要首先获取用户访问令牌,您的用户必须登录到您的应用程序并要求manage_pages权限范围。接下来,您可以获取/me/accounts,它将为您管理的每个页面返回一个页面访问令牌。

使用离线访问或未登录无法完成此操作。