Приложение веб-форм Facebook получает строку запроса app_data - PullRequest
6 голосов
/ 08 июля 2011

Как получить строку запроса app_data из приложения веб-форм Facebook? Я хочу иметь возможность отправлять некоторую информацию в строке запроса, чтобы я мог отображать другой домашний экран в моем приложении. Приложение находится на вкладке страницы.

Пример: http://www.facebook.com/pages/APPNAME/157772164271503?sk=app_230501256972470&app_data=Page.aspx

Как мне получить "Page.aspx" из app_data? Мне нужно, чтобы перенаправить пользователя на другую страницу из Default.aspx

Я нашел решение. Получить Querystring из приложения на вкладке Facebook, используя asp.net

using Newtonsoft.Json.Linq;
using System.Text;

public partial class Page_Default : System.Web.UI.Page
{
    protected string output = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        output = "Whole thing:" +Request.Form["signed_request"];
        output += "Second part:" + Request.Form["signed_request"].Split('.')[1];

            try
            {
                string payload = Request.Form["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);

                output += "Decoded:" + json;

                bool liked = (bool)o.SelectToken("page.liked");

                output += "Liked:" + liked.ToString();
            }
            catch (Exception ex)
            {
                output += "Extract failed: " + ex.Message;
            }
    }
}

Также этот пост был полезен

просто убедитесь, что добавили прямую страницу в настройках приложения Facebook, например. www.site.com/deafult.aspx не www.site.com

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

В массиве JSON, который публикует Facebook, одним из ключей верхнего уровня является 'app_data', если он указан. Таким образом, вы можете сделать это так же, как и для «любимого», но вместо «page.liked» это будет просто «app_data» (а не логическое значение)

0 голосов
/ 08 июля 2011

Facebook не передает строку запроса на вашу страницу.он отправляет сообщение на вашу страницу с другого URL, поэтому вы не сможете прочитать строку запроса при загрузке страницы.Я не пробовал это, но вы можете попробовать получить доступ к window.top.location.search в js страницы.

...