我正在尝试实施 whatsapp 业务 API,但我遇到了禁止错误,我认为这是因为我没有足够的权限。 我还在 Postman 上实现了这段代码,它在那里工作正常,但它在应用程序中不起作用,我不知道为什么?
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://graph.facebook.com/v15.0/110474688636083/messages");
request.Headers.Add("Authorization", "Bearer EAAM2wERIcIsBAFSGQD3yCSYRd5II5u7hU1859z8VcpNFlZBjJrqJUR2QrgZADHlHYSCG0zWvpYqVkFlzea9TsN1wnu8ZBZBSiEaXQu5OZAQC63ufVKZAQDHZB25CIq3TBQ9rxr2DdZB1oZBgJtia4eAEBbzqfjwJpXm9M5SZCGhDh7JbK0s1ldz2Od099jHfKrFvnQDZD");
var content = new StringContent("{\n \"messaging_product\": \"whatsapp\",\n \"to\": \""+WHATSAPPNO+"\",\n \"type\": \"template\",\n \"template\": {\n \"name\": \"hello_world\",\n \"language\": {\n \"code\": \"en_US\"\n }\n }\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
谢谢你的时间
您没有指定访问令牌。
request.Headers.Add("Authorization", "Bearer TOKEN");
TOKEN
这里是一个占位符而不是真正的令牌
这将帮助您解决问题,
模型文件,
public class Language
{
public string code { get; set; }
}
public class WhatsAppDataModel
{
public string messaging_product { get; set; }
public string to { get; set; }
public string type { get; set; }
public Template template { get; set; }
}
public class Template
{
public string name { get; set; }
public Language language { get; set; }
}
然后你需要两个包RestClient和Newtonsoft.Json, 主要的 c# 类函数,
string url = "https://graph.facebook.com/v15.0/110474688636083/messages";
Uri baseUri = new Uri(url);
IRestClient client = new RestClient(baseUri)
IRestRequest request = new RestRequest("", Method.Post);
request.AddHeader("Authorization", "Bearer " + Token);
request.AddHeader("Content-Type", "application/json");
Language lang = new Language();
lang.code = "en_US";
Template template = new Template();
template.name = "hello_world";
template.language = lang;
WhatsAppDataModel whatsapp = new WhatsAppDataModel();
whatsapp.messaging_product = "whatsapp";
whatsapp.to = "<whatsappNumber>";
whatsapp.type = "template";
whatsapp.template = template;
string body = JsonConvert.SerializeObject(whatsapp);
request.AddParameter("application/json", body , ParameterType.RequestBody);
var response = client.Execute(request);
var content = response.Content; // raw content as string
facebook graph API 最新版本是 v16.0 而不是 v15.0。因此,请尝试更新这也可能对您有所帮助。
在 v16.0 中发送消息的格式发生了变化check this
curl -X POST \
'https://graph.facebook.com/v16.0/FROM_PHONE_NUMBER_ID/messages' \
-H "Authorization: ACCESS_TOKEN" \
-d '{
"messaging_product": "whatsapp",
"to": "1650XXXXXXX",
"text": {"body" : "hi"}
}'