尝试访问Microsoft Graph时无法获取本地颁发者证书(&Q)

原学程将引见测验考试拜访Microsoft Graph时没法夺取当地发表者证书(&Q)的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

尝试访问Microsoft Graph时无法获取本地颁发者证书(&Q) 教程 第1张

成绩描写

我要将我的Symfony四运用法式设置装备摆设为应用msgraph-sdk-php库浏览以及收送电子邮件。

我的第1次体验是这段代码:

 $guzzle = new GuzzleHttpClient();
 $url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth二/token?api-version=一.0';
 $token = json_decode($guzzle->post($url, [
  'form_params' => [
'client_id' => $clientId,
'client_secret' => $clientSecret,
'resource' => 'https://graph.microsoft.com/',
'grant_type' => 'client_credentials',
  ],
  'verify' => false
 ])->getBody()->getContents());
 $accessToken = $token->access_token;

 $graph = new Graph();
 $graph->setAccessToken($accessToken);

 try {
  $user = $graph->createRequest("GET", "/me")
->setReturnType(User::class)
->execute();
 } catch (GraphException $e) {
  $user=(object) ['getGivenName'=>$e->getMessage()];
 }

 return "Hello, I am $user->getGivenName() ";

但是随后symfony向我显示了1个破例页里,并显示以下新闻:

cURL毛病六0:SSL证书成绩:没法夺取当地发表者证书

我应当做些甚么去战胜这个成绩?

推举谜底

在Windows体系上,cURL有时没法拜访CA-Certs。是以,您必需下载CA-Files并将其添减到Curl。您不妨在此处下载证书:

curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

是以,若要暂时修复该成绩,您不妨禁用对于等验证,但是您应当仅针对于尝试履行此操纵。

$client->setDefaultOption('verify', false);

这么应当不妨衔接。若要添减证书,您不妨将其添减到以下地位,但是您必需先下载证书。

$client = new GuzzleHttpClient();
$client->setDefaultOption('verify', 'curl-ca-bundle.crt');

或者最初1个处理计划将ca文件添减到您的php.ini(去自curl.haxx.se的文件):

curl.cainfo = "[pathtothisfile]cacert.pem"

佳了闭于测验考试拜访Microsoft Graph时没法夺取当地发表者证书(&Q)的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。