我正在尝试使用一个API,该API表示要在自定义应用程序中使用它来设置自定义引用。这是官方文字:
API要求(如果启用)令牌,以便发送读取操作 允许请求,否则将显示“ Missing'key'parameter”消息 返回。
安全模块将使用引荐来源网址标题(Java中为“ referer”, 请求中的HTTP_REFERER)以识别并过滤 授权域。
我目前可以使用提供的特殊URL登录到Web界面,该URL似乎可以设置会话,然后重定向到主URL。如果我尝试直接导航到主URL而没有先使用特殊URL,则会出现401错误,如预期的那样(此后,我只能使用主URL)
上方文本下方给出的键类似于:http://example.com/api/?key=secretkeyhere
尽管如上所述,我可以通过Web浏览器中的GUI工具使用API,但我不知道如何以编程方式连接到该API。我试过在Linux中使用curl和在PHP中使用curl。都失败了。
来自终端的卷曲:
curl --header http://example.com/api/?key=secretkeyhere http://example.com/api/search?query=terms*
PHP中的卷曲:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/api/search?query=terms');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://example.com/api/?key=secretkeyhere');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
$html = curl_exec($ch);
curl_close($ch);
echo "$html";
?>
我继续得到:
未授权此服务器无法验证您是否有权 访问所需的文档。您提供的是错误的 凭据(例如密码错误),或者您的浏览器无法理解 如何提供所需的凭据。
我在这里做错什么了吗? API设置不正确吗?我已经读过man
页的cURL,看来这正是我应该做的。