Декодировать подписанный запрос без аутентификации - PullRequest
1 голос
/ 25 октября 2011

Можем ли мы использовать Facebook C # SDK для декодирования параметра signature_request , который передается на вкладку Facebook без использования аутентификации ?В основном, я ищу способ декодирования и анализа объекта JSON страницы, который содержит подписанный запрос.

Я ищу .NET C # , эквивалентный выполнениютот же тип декодирования в этом примере PHP: Простой способ проверить, нравится ли пользователю страница

Ответы [ 2 ]

8 голосов
/ 29 октября 2011

Я просто вставляю тот же ответ, на который я ответил в другом сообщении.

Только для фанатов в Facebook с asp.net C # sdk

Вы получаете подписанный запрос, когда ваша веб-страница загружается в приложение facebook canvas; у вас должна быть возможность проанализировать подписанный запрос примерно так:

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("\"", "");
}

Вам нужно добавить ссылку на библиотеки json для анализа подписанного запроса в C #, скачать с http://json.codeplex.com/

Также обратитесь к Как декодировать OAuth 2.0 для Canvas Sign_Request в C #? , если вы беспокоитесь о подписанном запросе.

1 голос
/ 25 октября 2011

Что вы имеете в виду «без аутентификации»?Подписанный запрос подписывается секретом вашего приложения, поэтому вы можете декодировать его независимо от того, авторизовал ли ваш пользователь ваше приложение

{edit}. Теперь я понимаю, что вы имеете в виду библиотеку с именем Authentication {/ edit}

Если вы найдете другую библиотеку или переопределите алгоритм для HMAC SHA-256 и декодер base64url, я уверен, что вы могли бы сделать это без использования этой конкретной библиотеки, но, вероятно, проще использовать ее

...