2012-03-29 67 views
0

我以前用的是旧V5的Facebook C#SDK但似乎一切都在的FB :)FacebookSignedRequest新V6的Facebook C#SDK

世界不断快速变化已经改变了我用一个简单的代码位以帮助从已签名的请求获取Facebook页面ID,请参阅下文。但是这不再有效。

任何人都可以帮忙吗?

谢谢!

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(); 
        } 
+0

重复http://stackoverflow.com/a/9343575/157260 – prabir 2012-03-29 18:30:21

回答

0

我用这个与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;