Google Oauth2.0无法找到系统CA捆绑

时间:2016-09-14 05:03:51

标签: php oauth guzzle google-authentication

这是我的代码

require_once 'core_php/google-api-php-client-2.0.2_PHP54/vendor/autoload.php';

session_start();

$client = new Google_Client();
$client->setAuthConfigFile
($_SERVER['SR_WEB_CPANEL_PATH'].'asserts/php/client_secret.json');
$client->setRedirectUri('http://..../googleapi/oauth2callback.php');
$client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);

if (! isset($_GET['code'])) {
  $auth_url = $client->createAuthUrl();
  header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {

    $client->setHttpClient(new GuzzleHttp\Client(['verify'=>'C:/Windows/System32/curl-ca-bundle.crt']));

  $client->authenticate($_GET['code']);
  $_SESSION['access_token'] = $client->getAccessToken();
  $redirect_uri = '/googleapi/index.php';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

然后它有一个致命错误:

致命错误:未捕获的异常'RuntimeException',消息'在任何公共系统位置都找不到系统CA包。早于5.6的PHP版本未正确配置为默认使用系统的CA捆绑包。为了验证对等证书,您需要将磁盘上的路径提供给“验证”请求选项的证书包:http://docs.guzzlephp.org/en/latest/clients.html#verify。如果您不需要特定的证书包,那么Mozilla提供了一个常用的CA包,可以在这里下载(由cURL的维护者提供):https://raw.githubusercontent.com/bagder/ca-bundle/master/ CA-bundle.crt。在磁盘上有可用的CA捆绑包之后,可以将'openssl.cafile'PHP ini设置设置为指向文件的路径,从而省略'verify'请求选项。有关更多信息,请参见http://curl.haxx.se/docs/sslcerts.html。

我使用的是PHP 5.4。 我尝试从提供错误消息的链接下载CA捆绑包。 并在php.ini中添加了两行

openssl.cafile = 'C:/Windows/System32/curl-ca-bundle.crt'
curl.cainfo = 'C:/Windows/System32/cacert.pem'

它仍然不起作用。

有人可以帮忙吗?非常感谢你。

1 个答案:

答案 0 :(得分:0)

实际上,我不知道会发生什么。我终于安装了PHP 5.6。