【问题标题】:Clickatell: Invalid or missing Integration API KeyClickatell:集成 API 密钥无效或缺失
【发布时间】:2016-11-22 08:02:40
【问题描述】:
using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri("https://platform.clickatell.com/");

    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "wyOtm7-eRq-dSHWORr6hfw==");

    var stringContent = new StringContent("{\"content\":\"Test Message\",\"to\":[\"61400000000\"]}");
    stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

    var httpResponseMessage = AsyncHelper.RunSync(() => httpClient.PostAsync("messages", stringContent));

    var result = httpResponseMessage.Content.ReadAsStringAsync().Result;
}

结果是: {"messages":[],"error":"集成 API 密钥无效或缺失。-"}

但我的 API Key 与 Clickatell 定义的完全一样。

附加信息: Clickatell 站点显示以下 Json curl 调用(注意:我无法让 curl 工作以对其进行测试)。

CURL CALL:
==========
curl -i \
-X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: wyOtm7-eRq-dSHWORr6hfw==" \
-d '{"content": "Test Message Text", "to": ["61400000000"], "from": "+1234567890"}' \
-s https://platform.clickatell.com/messages

唯一的区别是我将我的令牌指定为不记名令牌。没有它,我会收到格式异常。

感谢任何能够阐明我的问题的人。

【问题讨论】:

  • 另一件有趣的事情...... API 以 Accepted (202) 响应,即使它显然对我的 API 密钥存在问题。

标签: clickatell


【解决方案1】:

手动测试 API

您可以使用谷歌Chrome的Postman APP查看

步骤:-

  1. 安装 POSTMAN(前往 google chrome 应用部分搜索邮递员)
  2. 创建一个 API
  3. 选择方法作为 POST
  4. 添加此网址https://platform.clickatell.com/messages
  5. 转到标题部分并添加标题
  6. 添加键 = Content-Type ,值 = application/json
  7. 添加键 = 接受,值 = application/json
  8. 添加密钥 = 授权 ,值 = 您的 API 密钥
  9. 转到正文部分
  10. 选择为原始格式
  11. 添加到正文中

    { "content": "测试信息", “到”:[“+919999999999”] }

  12. 点击发送

  13. 您会找到相应的回复。

按照上述过程,您还可以手动测试您的 API

【讨论】:

    【解决方案2】:

    我想我已经解决了。看来我需要使用无效的授权标头。

    httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "xxxxxxxxxxxxxxxxxxxxxx==");
    

    【讨论】:

      【解决方案3】:

      要解决此问题,请按照以下步骤操作:

      1. 登录到您的 clickatell 帐户。
      2. 转到 SMS 集成(左侧菜单)。
      3. 选择(单击)您的集成名称。
      4. 您会找到更新按钮,然后是 API 密钥。
      5. 单击“更新”按钮,它将更新您的 API 密钥。
      6. 现在保存或发布您的集成。
      7. 确保您的 SMS 集成应处于活动模式。 (您可以从 SMS 集成(左侧菜单)状态选项卡更改状态)

      创建一个实体(名称:OTPRequestEntity)

      public class OTPRequestEntity
      {
          [JsonProperty("content")]
          public string content { get; set; }
      
          [JsonProperty("to")]
          public List<string> to { get; set; }
      }
      

      转到您的代码并添加标题:-

      OTPResponseEntity entOTPResponseEntity = new OTPResponseEntity();
      List<string> numbers = new List<string>();
      numbers.Add("Your Mobile Number");
      string apiBaseAddress = "https://platform.clickatell.com";
      var objHttpClient = new HttpClient();
      objHttpClient.BaseAddress = new Uri(apiBaseAddress);
      objHttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
      objHttpClient.DefaultRequestHeaders.Add(HttpRequestHeader.ContentType.ToString(), "application/json");
      objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Your API Key");
      var vendRequest = new OTPRequestEntity
      {
          content = "Your Message.",
          to = numbers
      };
      HttpResponseMessage apioresponse = await objHttpClient.PostAsJsonAsync("/messages", vendRequest).ConfigureAwait(false);
      apioresponse.EnsureSuccessStatusCode();
      if (apioresponse.StatusCode == HttpStatusCode.Accepted)
      {
          string responseString = await apioresponse.Content.ReadAsStringAsync().ConfigureAwait(false);
          entOTPResponseEntity = JsonConvert.DeserializeObject<OTPResponseEntity>(responseString);
      }
      

      entOTPResponseEntity 对象中,您将获得 API 响应

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 2012-04-29
        • 2016-10-31
        • 1970-01-01
        相关资源
        最近更新 更多