Facebook требует, чтобы я создал appecret_proof: https://developers.facebook.com/docs/graph-api/securing-requests
И я сделал это, используя следующий код:
public string FaceBookSecret(string content, string key)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
byte[] messageBytes = encoding.GetBytes(content);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return Convert.ToBase64String(hashmessage);
}
}
Все выглядит хорошо для меня, однако в facebook говорится, что appsecret_proof недействителен. Я вошел в систему, я могу сделать все как обычно, когда я удаляю ключ. Поэтому, чтобы сэкономить время:
- Да, я отправляю правильный URL
- Да, я передаю действительный access_token
- Да, я использую тот же access_token в доказательстве, что и я в запросе
- Да, мои appsecret в порядке, и работает
Пример использования
dynamic results = client.Post("/" + model.PostAsId + "/feed", new { message = model.Message, appsecret_proof = FaceBookSecret(postAs.AuthToken, AppSecret) });
Я думаю, что он, вероятно, имеет какое-то отношение к кодировке или чему-то в этом отношении, но, честно говоря, я просто не знаю.
Я также использую SDK.net SDK, но это мало чем связано с документацией и, похоже, не влияет на автоматизацию, операции на стороне сервера и т.д.
Спасибо