我有以下 PHP 代码:<?php$data = array("client_id" => "sipgate-app-web", "grant_type" => "password", "username" => "my_username", "password" => "my_password");$data_string = json_encode($data);$ch = curl_init('https://api.sipgate.com/login/sipgate-apps/protocol/openid-connect/token');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded','Accept: application/json'));$result = curl_exec($ch);echo $result;?>不幸的是,我没有得到预期的回应。我收到的回复是:{"error":"invalid_request","error_description":"缺少表单参数:grant_type"}当使用像https://onlinecurl.com这样的在线 cURL 工具和我的 cURL PHP 代码中相同的数据(URL、标题、数据)时,我得到了正确的响应。这意味着,我的 PHP 代码有问题。我在 PHP 错误日志中没有收到任何错误。手册说我必须使用以下 cURL 代码: curl \--request POST \--header 'Content-Type: application/x-www-form-urlencoded' \--header 'Accept: application/json' \--data-urlencode "client_id=sipgate-app-web" \--data-urlencode "grant_type=password" \--data-urlencode "username=my_username" \--data-urlencode "password=my_password" \https://api.sipgate.com/login/sipgate-apps/protocol/openid-connect/token由于我是 cURL 的新手,在谷歌搜索了很多之后,我不知道我做错了什么。有谁能够帮助我?编辑:您可以按原样测试我上面的 PHP 代码。如果代码正常工作,您应该得到以下响应:{"error":"invalid_grant","error_description":"无效的用户凭据"}
2 回答
手掌心
TA贡献1942条经验 获得超3个赞
按照说明书,你的要求需要有Content-Type
的application/x-www-form-urlencoded
,看起来像这样:
key1=value1&key2=value2
因此,您需要手动或使用 将数组转换为这样的字符串http_build_query
,如下所示:
$data_string = http_build_query( $data );
- 2 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消