Post 使用 Facebook SDK .net 2015 分组墙

Post to group wall using Facebook SDK .net 2015

现在似乎没有办法允许 post 通过新的、未经审查的应用进入 facebook 用户组。

我创建了一个应用程序,它具有适用于 public 一代的实时功能,并获得了电子邮件批准,public_profile,user_friends。

我正在尝试 post 在我创建的群组的墙上,我是该群组的管理员。

现在,在启动我的代码时,我遇到了讨厌的 "OAuthException - #200) (#200) Insufficient permission to post to target..." 异常。

张贴我的墙效果很好...

public class HomeController : Controller
{

   private const  long GroupId = 15473890820xxxx;
    //
    // GET: /Home/
    public ActionResult Index(string code)
    {
        ViewBag.Message = "Welcome to Facebook App Demo!";

        //user denied permissions on Facebook. 
        if (Request["error_reason"] == "user_denied")
        {
            //this is not implemented. For reference only.
            return RedirectToAction("LogOn", "Account");
        }

        if (string.IsNullOrEmpty(code))
        {
            ViewBag.Error = "There was an error while loggin into Facebook. Please try again later.";
            return RedirectToAction("LogOn", "Account");
        }

        var fb = new FacebookClient();
        dynamic result = fb.Post("oauth/access_token", new
        {

            client_id = "93199615018xxxx",                
            client_secret = "2089ae4447877e7388500b844235xxxx",               
            redirect_uri = "http://localhost:13301/",
            code = code
        });

        var appToken = result.access_token as string;

        // update the facebook client with the access token so 
        // we can make requests on behalf of the user
        fb.AccessToken = appToken;

        //get extended App/User Token
        dynamic result2  = fb.Get("oauth/access_token", new
        {

            client_id = "93199615018xxxx"

            client_secret = "2089ae4447877e7388500b844235xxxx",

            grant_type="fb_exchange_token",
            fb_exchange_token = appToken,
           // code = code
        });

        var extendedAppToken = result2.access_token as string;
        //generate Extended User Token (valid for 60 days)

        Session["Facebooktoken"] = extendedAppToken; 

        dynamic me = fb.Get("me/accounts");

        var response = fb.Get("/me/accounts?access_token=" + extendedAppToken) as JsonObject;

        return View(me);

    }

    [HttpPost]
    public ActionResult Index(FormCollection collection) //rename to PostWall
    {
        ViewBag.Message = "Welcome to Facebook App Demo!";

        // Post to the wall..
        try
        {
            if (Session["Facebooktoken"] != null)
            {
                string message = collection["txtPost"].ToString();
                FacebookClient client = new FacebookClient(Session["Facebooktoken"].ToString());

                dynamic result = client.Post(GroupId+"/feed", new
                {
                    message = message
                });

                ViewBag.SaveMessage = "Successfuly Post on your wall : " + result.id;
            }
            else
            {
                return RedirectToAction("LogOn", "Account");
            }
        }
        catch (Exception ex)
        {
            ModelState.AddModelError("", ex.Message);
        }

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}
public class AccountController : Controller
{
    //
    // GET: /Account/

    public ActionResult LogOn()
    {
        return View();
    }

    [HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {

        var facebookAppId = "93199615018xxxx";

        var facebookAppSecret = "2089ae4447877e7388500b844235xxxx";

        var facebookRedirectUrl = "http://localhost:13301/";
        //
        var facebookScope = "email,publish_pages,publish_actions,manage_pages,user_managed_groups,user_hometown,user_website";

        if (facebookAppId != null && facebookAppSecret != null && facebookRedirectUrl != null && facebookScope != null)
        {
            var url = string.Format(@"https://www.facebook.com/dialog/oauth/?client_id={0}&redirect_uri={1}&scope={2}", facebookAppId, facebookRedirectUrl, facebookScope);

            Response.Redirect(url, true);
        }

        return this.RedirectToAction("Index", "Home");
    }

}

关于如何为上述功能设置测试环境而无需额外一轮建立必须由 Facebook 管理员审查的成熟应用程序的任何线索?我看过应用程序和用户的测试版本,但也没有组。

非常感谢

达伦,感谢您的考虑。似乎由于我的隐私限制,我无法获得我个人帐户的任何组信息。在 Facebooks Graph API Explorer 中以编程方式或手动方式。

通过在 Facebook Access Token Debuger.

中获取 'long-lived' 页面访问令牌,它终于在企业(粉丝)'Page' 个人资料上发挥作用

是的,user_managed_groups 和 publish_actions 已启用。