Facebook đòi hỏi mà tôi tạo ra một appsecret_proof: https://developers.facebook.com/docs/graph-api/securing-requestsC# giúp đỡ cần thiết để tạo Facebook AppSecret_Proof HMACSHA256
Và tôi đã làm điều này bằng cách sử dụng đoạn mã sau:
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);
}
}
Tất cả mọi thứ có vẻ tốt đẹp đối với tôi, tuy nhiên facebook nói rằng appsecret_proof không hợp lệ. Tôi đã đăng nhập, tôi có thể làm mọi thứ như bình thường khi tôi xóa khóa. Vì vậy, để tiết kiệm thời gian:
- Có Tôi gửi bài đến URL chính xác
- Có, tôi đang đi qua một hợp lệ access_token
- Có, tôi đang sử dụng access_token cùng trong chứng minh, như tôi trong yêu cầu
- có appsecret của tôi là tốt, và các công trình
Ví dụ trong việc sử dụng
dynamic results = client.Post("/" + model.PostAsId + "/feed", new { message = model.Message, appsecret_proof = FaceBookSecret(postAs.AuthToken, AppSecret) });
Tôi nghĩ rằng nó có thể có một cái gì đó để làm với mã hóa hoặc một cái gì đó dọc theo họ dòng, nhưng phải trung thực, tôi chỉ không biết.
Tôi cũng đang sử dụng .net SDK Facebook tuy nhiên điều này không có nhiều trong tài liệu, và dường như không để tấn công vào bất cứ điều gì để làm với tự động hóa, các hoạt động phía máy chủ, vv
Cảm ơn
bạn có thể hiển thị mã chi tiết xin - làm thế nào để bạn tạo 'client'? Bạn có chắc là bạn đang sử dụng cùng một app.Id cho cả băm và yêu cầu? Ngoài ra - hãy thử 'Encoding.UTF8.GetBytes' chỉ trong trường hợp - có thể là sẽ làm các trick ... – avs099
Tôi đã có cùng một vấn đề và giải quyết nó cho API facebook v2.4 ở đây: http://stackoverflow.com/questions/31932675/how-to-send-appsecret-proof-using-facebook-c-sharp-sdk/31933544 # 31933544 – Yovav