如何在REST API中授权发布请求?

时间:2018-02-27 14:07:49

标签: php rest api curl post

我正坐在这里使用curl在php中的rest api中发布帖子请求。为此,我有api密钥和auth密钥,我目前在请求中包含post值。但我继续在我的响应中获取HTML而不是JSON数据(它应该是)给我一个401未经授权的错误。

我注意到在这些情况下,您经常需要制作自定义标题来授权自己(我猜测我需要使用我的身份验证密钥,在标题中以某种方式)。

这是我的代码:

$post = [
    'apikey' => $apiKey,
    'authkey' => $authKey,
    'name' => $reknr,
    'description' => $opgave,
    'clientId'   => $clientId,
    'orderTypeId' => $typeId,
    'contactAddressId' => $addressId,
    'theirref' => $ref,
    'reqno' => $reknr
];

// Set api link
$ch = curl_init('https://app.minuba.dk/api/1/Order');

// Set return value to true
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Configure header
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Authorization: Basic '.$authKey,
        'Content-Type: application/json')
);

// Add post fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

// execute!
$response = curl_exec($ch);

// close the connection, release resources used
curl_close($ch);

API文档在发布请求时没有说明您如何授权自己,在获取请求期间,您只需将apikey和authkey作为普通参数包含在内,它就可以正常工作。

我的问题是,我如何知道如何配置我的标题以便API授权我?文档对此没有任何说明或提供任何解释,除非提及您需要apikey和authkey才能获得访问权。

我承认我对http标头的理解是有限的,但我怎么知道如何为这个特定的api配置它?

更新:

发现标题响应给了我这一行: WWW-Authenticate:Basic realm =" Minuba REST API"

这告诉我,我用来验证的方法应该是正确的吗?那我为什么还要上401?

0 个答案:

没有答案