php 客户端的 Swagger 基本身份验证失败
Swagger basic authentication fails with php client
当我尝试使用从 yaml 文件生成的 php 客户端时,它似乎不起作用。即使我已经填写了身份验证配置,我仍然收到身份验证错误。但是当我用基本的身份验证选项替换生成的 API 中的选项变量时,它确实有效。请看下面的代码:
public function getLiveWegvakkenDataWithHttpInfo()
{
$returnType = '\Swagger\Client\Model\Wegvak[]';
$request = $this->getLiveWegvakkenDataRequest();
try {
$options = $this->createHttpClientOption();
try {
$response = $this->client->send($request, $options);
} catch (RequestException $e) {
throw new ApiException(
"[{$e->getCode()}] {$e->getMessage()}",
$e->getCode(),
$e->getResponse() ? $e->getResponse()->getHeaders() : null,
$e->getResponse() ? $e->getResponse()->getBody()->getContents() : null
);
}
上面的代码不起作用,但是当我用这个替换 $options
时:
[
'auth' => [
'username',
'password',
]]
确实有效。有人可以解释我做错了什么吗?因为标准实施不起作用对我来说似乎很奇怪。
最后我发现我的yaml文件没有包含这个:https://swagger.io/docs/specification/authentication/basic-authentication/
在上面的文档中说您需要此代码:
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
security:
- basicAuth: []
当您添加此代码时,它将在 API 代码中实施,以实际使用您在配置中填写的基本身份验证。否则没有它,它只会发出请求而不在请求中添加身份验证 header.
所以在添加这个并填写配置后它对我有用。
当我尝试使用从 yaml 文件生成的 php 客户端时,它似乎不起作用。即使我已经填写了身份验证配置,我仍然收到身份验证错误。但是当我用基本的身份验证选项替换生成的 API 中的选项变量时,它确实有效。请看下面的代码:
public function getLiveWegvakkenDataWithHttpInfo()
{
$returnType = '\Swagger\Client\Model\Wegvak[]';
$request = $this->getLiveWegvakkenDataRequest();
try {
$options = $this->createHttpClientOption();
try {
$response = $this->client->send($request, $options);
} catch (RequestException $e) {
throw new ApiException(
"[{$e->getCode()}] {$e->getMessage()}",
$e->getCode(),
$e->getResponse() ? $e->getResponse()->getHeaders() : null,
$e->getResponse() ? $e->getResponse()->getBody()->getContents() : null
);
}
上面的代码不起作用,但是当我用这个替换 $options
时:
[
'auth' => [
'username',
'password',
]]
确实有效。有人可以解释我做错了什么吗?因为标准实施不起作用对我来说似乎很奇怪。
最后我发现我的yaml文件没有包含这个:https://swagger.io/docs/specification/authentication/basic-authentication/
在上面的文档中说您需要此代码:
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
security:
- basicAuth: []
当您添加此代码时,它将在 API 代码中实施,以实际使用您在配置中填写的基本身份验证。否则没有它,它只会发出请求而不在请求中添加身份验证 header.
所以在添加这个并填写配置后它对我有用。