FacebookSignedRequest в новом v6 Facebook C # SDK - PullRequest
0 голосов
/ 29 марта 2012

Раньше я использовал старый v5 facebook c # sdk, но, кажется, все изменилось в быстро меняющемся мире FB:)

Раньше я использовал простой кусочек кода, чтобы помочь получить страницу facebookИдентификатор из подписанного запроса, см. Ниже.Но это больше не работает.

Кто-нибудь может помочь?

Спасибо !!

FacebookSignedRequest fbSr = FacebookSignedRequest.Parse(appSecret, HttpContext.Current.Request.Form["signed_request"]);
                    if (fbSr != null)
                    {
                        JObject fbSrObj = JObject.Parse(fbSr.Data.ToString());
                        if (fbSrObj["page"] != null && fbSrObj["page"]["id"] != null)
                            return fbSrObj["page"]["id"].ToString();
                    }

1 Ответ

0 голосов
/ 29 марта 2012

Я использую это с v6.10:

            string test = "";

        var client = new FacebookClient();
        if (Request.Params["signed_request"] != null)
        {
            string payload = Request.Params["signed_request"].Split('.')[1];
            var encoding = new UTF8Encoding();
            var decodedJson = payload.Replace("=", string.Empty).Replace('-', '+').Replace('_', '/');
            var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '='));
            var json = encoding.GetString(base64JsonArray);
            var o = JObject.Parse(json);
            var lPid = Convert.ToString(o.SelectToken("page.id")).Replace("\"", "");
            var lLiked = Convert.ToString(o.SelectToken("page.liked")).Replace("\"", "");
            var lUserId = Convert.ToString(o.SelectToken("user_id")).Replace("\"", "");
            var lAdmin = Convert.ToString(o.SelectToken("admin")).Replace("\"", "");
            //test += lPid;    //current page id (where app is installed)
            //test += lLiked;  //page is liked by current visitor
            //test += lUserId; //current visitor
            //test += lAdmin;  //is current visitor an admin (does not work for me)
            if (lPid == "IDOFTHEPAGETOWORKWITH")
            {
                //test += (lAdmin == "True" || lUserId == "ADMIN ID HERE") ? " is admin" : "not admin";
                if (lLiked == "False")
                {
                    test = "like it please";
                }
                else
                {
                    test = "thank you";
                }
            }

        }
        ViewBag.Test = test;
...