授权请求出现问题

2024-01-01

我正在尝试在 Sinch 服务中发出conferenceCallout 请求,但我在签名方面遇到问题。我粘贴代码:

<?php 
//JSon Object
$conferencia['method']="conferenceCallout";
$participante['cli']="46000000000";
$destination['type']="username";
$destination['endpoint']="roke1";
$participante['destination']=$destination;
$participante['domain']="mxp";
$participante['custom']="customData";
$participante['locale']="en-US";
$participante['greeting']="Welcome to my conference";
$participante['conferenceId']="conferencia_de_prueba";
$participante["enableDice"]=false;

$conferencia['conferenceCallout']=$participante;

$data=json_encode($conferencia);



$md5_body = base64_encode ( MD5 ( utf8_encode ( json_encode($conferencia) ) ) );

$applicationKey="XXXXXX-xXXX-XXXX-XXXX-XXXXXXXX";
$applicationSecret="XXXXXXXXXXXXXXXX==";

$timestamp = new DateTime('NOW');

$StringToSign ="POST
        ".$md5_body."
        application/json
        x-timestamp:".$timestamp->format(DateTime::ISO8601)."
        /v1/callouts";

$utf8encode=utf8_encode($StringToSign);
$hash= hash_hmac("sha256",$applicationSecret,$utf8encode);
$base64=base64_encode($hash);

$Signature =$base64;
$Autorization = "Application"." ".$applicationKey.":".$Signature;


$ch = curl_init('https://callingapi.sinch.com/v1/callouts');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Authorization:' . $Autorization,
        'X-Timestamp: ' . $timestamp->format(DateTime::ISO8601),
        'Content-Length: ' . strlen($data))
        );

$result = curl_exec($ch);
echo $result;

?>

但我收到错误代码 40102,即 40102 - 签名无效。

谁能帮我?我做错了什么?

此致。


我发布了对我有用的代码。

$phone ="+460000000" //Put the destination number here
$key = "XXXXXX";    
$secret = "XXXXXX"; 
$message = $first_name . ', thanks you for signing in. We will text you when we\'re ready for you';
$phone   = $phone_number;

$body = json_encode(array('From' => $rented_number, 'Message'=>$message, ));

$timestamp = date("c");

$path                  = "/v1/sms".$phone;
$content_type          = "application/json";
$canonicalized_headers = "x-timestamp:" . $timestamp;

$content_md5 = base64_encode( md5( utf8_encode($body), true ));

$string_to_sign =
    "POST\n".
    $content_md5."\n".
    $content_type."\n".
    $canonicalized_headers."\n".
    $path;

$signature = base64_encode(hash_hmac("sha256", utf8_encode($string_to_sign), base64_decode($secret), true));
$authorization = "Application " . $key . ":" . $signature;

$service_url = 'https://messagingapi.sinch.com'.$path;
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'content-type: '.$content_type,
    'x-timestamp:' . $timestamp,
    'authorization:' . $authorization
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$curl_response = curl_exec($curl);
// @todo: checking response / working with results
curl_close($curl);

感谢draw010 的帮助,太棒了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

授权请求出现问题 的相关文章

随机推荐

  • 从android webview中的base64 url​​下载文件

    我正在编写一个 webview 应用程序 在其中我可以从 html 标签 url 下载文件到设备 我可以下载 png jpg pdf 等文件 但是当 url 是 base64 字符串值时我不知道如何下载它 有人可以帮助我实现这一目标吗 例如
  • AS3 setChildIndex 到前面

    有没有办法将特定的 movieClip 发送到舞台上所有其他 movieClip 的前面 我知道 setChildIndex 但我无法找到动态计算顶部位置的方法 您可以使用setChildIndex with numChildren set
  • Google Places API:“place_id”或“id”对于世界上的任何城市来说都是唯一的吗?

    当对某个位置执行自动完成 API 调用时 我请求来自 google 的 JSON 响应 id 和 place id 字符串有什么区别 这两个ID是世界上任何一个城市所独有的吗 谷歌地点是否为世界上的每个城市分配一个ID 例如 Somers
  • Spark 中 IF then ELSE 的等价物

    我早些时候在这里看到过这个问题 并从中吸取了教训 但是 我不确定为什么当我认为它应该起作用时会出现错误 我想在现有 Spark 中创建一个新列DataFrame通过一些规则 这是我写的 iris spark 是具有分类变量 iris spa
  • 如何使用 SSE 将 _m128i 转换为无符号整数?

    我制作了一个用于图像分离的功能 define ARGB COLOR a r g b a lt lt 24 r lt lt 16 g lt lt 8 b inline UINT PosterizeColor const UINT color
  • 如何使用 GQL 使用管理控制台数据存储区查看器插入记录

    是否可以使用 管理 gt 数据存储查看器 在数据存储中插入或更新实体 例如 执行类似的事情 INSERT INTO table VALUES Foo Bar 不适用于 GQL 但可以使用以下命令插入和更新实体数据存储查看器 To INSER
  • Google Calendar API“请求的最短修改时间太早了。”仅仅一天之后

    我的代码使用获取日历事件service events list 具有以下参数 timeMax 2015 11 13T04 12 44 263000Z timeMin 2014 05 17T04 12 44 263000Z updatedMi
  • 在 JSF 中验证类级别 bean 验证约束

    看来JSF 2 0并没有调用 类级别约束 引用自一个所以答案 https stackoverflow com a 9213763 1803692 JSF 2 0 不调用类级别验证约束 从JSF 验证 http www masterthebo
  • 设置 SCSS 颜色变量不起作用

    我想在 SCSS 中定义自己的颜色变量 但是如何定义呢 我检查了这个网站 https htmlcolorcodes com tutorials scss color variables 并做了那里描述的一切 但它不起作用 我已经安装了预处理
  • 在 ASPNET MVC 中通过身份验证提供 iCalendar 文件

    我正在尝试在我的 MVC 应用程序中提供 iCalendar 文件 ics 到目前为止一切正常 我有一部 iPhone 订阅了日历的 URL 但现在我需要为每个用户提供个性化的日历 在 iPhone 上订阅日历时 我可以输入用户名和密码 但
  • 我需要担心阻塞任务吗?

    我需要在多大程度上担心 NET 中的阻塞任务 即 NET 任务调度程序如何处理线程池中线程的阻塞和超额订阅 例如 如果我的任务中有一些 IO 我是否应该始终使用LongRunning暗示 或者任务调度程序启发式处理得更好吗 在C 中有一个O
  • 实现滑动刷新布局后,回收器视图无法正确滚动

    在实现 滑动刷新 视图之前 回收器视图运行顺利 但每当我尝试向下滚动回收器视图时 滑动刷新 都会干扰并阻碍滚动移动 这是问题的屏幕截图 请注意 当回收器视图向下滚动时 会出现滑动刷新布局 这是我的布局片段
  • 命令行 Java 调试器

    有没有好的java命令行调试器 我给了 JDB 一个机会 但命令行界面很糟糕 如果我想更改最后一行并重新执行它 我必须重新输入整行 点击 向上箭头 只会给我 A 包 类 方法名也没有完成 GDB 是一个不错的选择 但我不知道如何用它进行远程
  • R 中的全局变量和局部变量

    我是 R 的新手 我对 R 中局部变量和全局变量的使用感到很困惑 我在互联网上读到一些帖子说如果我使用 or lt 我将在当前环境中分配变量 并使用 lt lt 我可以在函数内部访问全局变量 然而 据我记得 在 C 中 每当在括号内声明变量
  • 如何将引号传递给javascript函数

    我有一个 javascript 函数 它接受包含引号的字符串并显示在输入字段中 但是这个函数不接受引号后面的字符串 function searchFormatter cellvalue options rowObject return
  • 如何在 JavaScript 中实现类似 Swift 的枚举以及关联值?

    Swift 语言拥有出色的枚举支持 人们不仅可以用案例定义标准枚举 而且案例还可以具有 与其关联 的可选值 例如 摘自 Swift 文档 enum Barcode case UPCA Int Int Int Int case QRCode
  • 如何关闭Android Studio 3.0标签? [复制]

    这个问题在这里已经有答案了 我刚刚升级到 Android Studio 3 0 我注意到我的代码中到处都是奇怪的标签 标签 我无法手动删除这些标签 因为光标只是跳过它们 如何关闭这些标签 Android Studio 具有与 Intelli
  • 有什么方法可以在 Java/Eclipse 中对方法进行分组吗?

    我希望能够将类似的方法分组并让它们出现在 Eclipse 的大纲视图中 这使得浏览大量代码变得更容易 并且更容易找到所需的方法 在 Objective C 中 有一个可以设置的 pragma mark 命令 java eclipse 有类似
  • 当 KVM-QEMU 打开时,Intel-PT 不记录任何数据包

    我尝试在主机上使用 Intel PT 同时在客户机上运行通用软件程序 所以我期望主机中运行的 Intel PT 将记录所有相关数据包 如 PIP FUP TSC 等 以及所有基于 VM 的数据包 如 VMCS 我使用以下命令 perf kv
  • 授权请求出现问题

    我正在尝试在 Sinch 服务中发出conferenceCallout 请求 但我在签名方面遇到问题 我粘贴代码