我在Windows 10 X64和laravel 5.5中使用wamp 3.0.6和php 7。 我的系统中有两个虚拟主机:
virtual-host1.local>>>的public_html \ SITE1
virtual-host2.local>>>的public_html \站点2
我在virtual-host1.local中安装了laravel passport并进行配置。
当我试图用邮递员制作令牌时,它正常工作。 所以,当我从virtual-host1.local
尝试使用GuzzleHttp时,它工作正常但现在我想通过curl或GuzzleHttp从virtual-host2.local获取访问令牌。但我总是得到以下信息:
{"error":"invalid_client","message":"Client authentication failed"}
我跟踪了请求。当 virtual-host2 请求到达Laravel \ Passport \ ClientRepository并调用find函数(第13行)时,eloquent不会返回任何结果(总是返回null
! )。而变量$id
已设置!
但是当我使用邮递员或从virtual-host1.local调用它时,回复结果很有说服力
什么问题?
它在virtual-host1.local中工作:
$http = new GuzzleHttp;
$response = $http->POST('http://api.payment-mediator.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => '5',
'client_secret' => 'edHmPJF1aiQ8IU2qCCbLo6uIGx19cXYa7Cli5ZZA',
'username' => 'beshkanweb@gmail.com',
'password' => 'beshkan'
]
]);
但如果我从virtual-host2.local运行此代码,则会收到错误:
{"error":"invalid_client","message":"Client authentication failed"}
它的工作独立于laravel:
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://api.virtual-host1.local/oauth/token',
CURLOPT_USERAGENT => 'Codular Sample cURL Request',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
'grant_type' => 'password',
'client_id' => '5',
'client_secret' => '*secretKey*',
'username' => '*username*',
'password' => '*password*',
)
));
但不是Laravel的工作!