РЕДАКТИРОВАТЬ: Если вы хотите показывать определенный контент вместо того, чтобы идти к стене, сделайте абсолютное позиционирование div
поверх скрытого контента и скройте div
, когда оно нравится.
Если выиспользую C # ASP.Net, у меня никогда не было проблем с использованием этой техники.Вы можете проверить signed_request
и декодировать, используя JObject
, а затем перенаправить по мере необходимости.
Проверьте это: Как декодировать OAuth 2.0 для Canvas Sign_Request в C #?
Вам нужно скачать и сослаться на JSON.Net отсюда: Json.NET
На странице загрузки:
if (Request.Form["signed_request"] != null)
{
var result = (IDictionary)DecodePayload(Request.Form["signed_request"].Split('.')[1]);
JObject liked = JObject.Parse(result["page"].ToString());
if (liked["liked"].ToString().Trim().ToLower() == "true")
{
//do redirection here
}
}
Функция декодирования полезной нагрузки здесь:
public Dictionary<string, string> DecodePayload(string payload)
{
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 jObject = JObject.Parse(json);
var parameters = new Dictionary<string, string>();
parameters.Add("user_id", (string)jObject["user_id"] ?? "");
parameters.Add("oauth_token", (string)jObject["oauth_token"] ?? "");
var expires = ((long?)jObject["expires"] ?? 0);
parameters.Add("expires", expires > 0 ? expires.ToString() : "");
parameters.Add("profile_id", (string)jObject["profile_id"] ?? "");
parameters.Add("page", jObject["page"].ToString() ?? "");
return parameters;
}