Как прочитать подписанный запрос, используя C# 4.0

Я использую C# 4.0 и интегрирую плагин для регистрации в Facebook. Может кто-нибудь сказать мне, что мне нужно сделать, чтобы прочитать подписанный запрос. Я скачал Facebook.dll и Newtonsoft.Json.dll У меня также есть действительный идентификатор приложения: * ** Ключ API: * ** * ** * *** Секрет приложения: ** * ** * ** * *** * Если возможно, пожалуйста, дайте мне пример кода, как я должен передать эти ключи и как я могу собрать декодированные данные, отправленные в форме подписанного запроса.

Спасибо:

2 ответа

Решение

Должны быть более простые способы прочитать подписанный запрос, вот что я использую. Есть несколько шагов, чтобы прочитать подписанный запрос facebook в C#

  1. Dot Net 2010 требуется, чтобы выполнить следующие действия. Предполагается, что если вы создадите новый веб-проект с именем "fb", тогда вы можете импортировать этот код в свой реальный проект.
  2. Загрузить исходный код с http://facebooksdk.codeplex.com/SourceControl/changeset/view/f8109846cba5
  3. После распаковки вы получите "facebooksdk-f8109846cba5", внутри которого вы найдете папку facebooksdk-f8109846cba5\Source\Facebook, в этой папке ищите "Facebook.csproj"
  4. Откройте "Facebook.csproj" в версии 2010 года. Найдите файл "FacebookApp.cs", откройте этот файл и выполните поиск по запросу "внутренний защищенный FacebookSignedRequest ParseSignedRequest(строка signatureRequestValue)
  5. Измените "внутренняя защита" на "публичная"
  6. Затем создайте проект, щелкнув правой кнопкой мыши на проекте. Теперь его файл "Facebook.dll" готов к использованию. Скопируйте его в каталог bin вашего проекта и добавьте его ссылку.
  7. Теперь загрузите Json.Net 3.5 выпуск 8 с http://json.codeplex.com/releases/view/50552 и добавьте его в папку bin проекта, а также добавьте его ссылку.
  8. Теперь вы готовы прочитать подписанный запрос. Пришло время написать код для чтения подписанного запроса.

using System;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using Facebook;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
using System.Collections.Generic;

namespace fb
{
    public partial class test3 : System.Web.UI.Page
    {



        protected void Page_Load(object sender, EventArgs e)
        {

            FacebookApp fap = new FacebookApp();


            fap.AppId = "************";
            fap.AppSecret = "********************";

            string requested_Data = Request.Form["signed_request"];

            FacebookSignedRequest fsr = fap.ParseSignedRequest(requested_Data);


           // string json = JsonConvert.SerializeObject(fsr.Dictionary, Formatting.Indented);


            UserData ud = new UserData(fsr);

            Response.Write(ud.name + "
"); Response.Write(ud.birthday + "
"); Response.Write(ud.country + "
"); Response.Write(ud.email + "
"); Response.Write(ud.gender + "
"); Response.Write(ud.location + "
"); Response.Write(ud.userId + "
"); } } public class UserData { public UserData(FacebookSignedRequest fsr) { string value = string.Empty; JObject o; foreach (string key in fsr.Dictionary.Keys) { value = fsr.Dictionary[key]; switch (key) { case "user_id": userId = value; break; case "registration": o = JObject.Parse(value); name = GetValue(o, "name"); birthday = GetValue(o, "birthday"); email = GetValue(o, "email"); gender = GetValue(o, "gender"); location = GetValue(o, "location.name"); break; case "user": o = JObject.Parse(value); country = GetValue(o, "country"); break; } } } private string GetValue(JObject o, string token) { string ret = string.Empty; try { ret = (string)o.SelectToken(token); } catch (Exception ex) { throw ex; } return ret; } public string name { get; set; } public string birthday { get; set; } public string gender { get; set; } public string location { get; set; } public string country { get; set; } public string email { get; set; } public string userId { get; set; } } }
  1. Это то, что я использую, и это прекрасно работает для меня.

Здесь используется FB C# SDK v.5.2.1.0

var signed_request = Request.Form["signed_request"];

var fap = Facebook.FacebookApplication.Current;
var signed_request_obj = Facebook.FacebookSignedRequest.Parse(fap, signed_request);
if (signed_request_obj != null)
{
  JObject o = JObject.Parse(signed_request_obj.Data.ToString());
}
Другие вопросы по тегам