我try 将带有正确应用程序ID、应用程序机密等的curl请求发送到

  https://oauth.vk.com/access_token?client_id=APP_ID&client_secret=APP_SECRET&code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a&redirect_uri=REDIRECT_URI 

我需要从中获取access_token,但获取FALSE并打印下一条消息,否则:

60: SSL certificate problem: self signed certificate in certificate chain

我的代码是:

    // create curl resource
    $ch = curl_init();

    // set url
    curl_setopt($ch, CURLOPT_URL, $url);
    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // $output contains the output string
    $output = curl_exec($ch);
    if ( ! $output) {
        print curl_errno($ch) .': '. curl_error($ch);
    }

    // close curl resource to free up system resources
    curl_close($ch);

    return $output;

当我手动转到上面的链接时,我可以很好地获得ACCESS_TOKEN.为什么它对卷发不起作用?请帮帮忙.

推荐答案

建议禁用CURLOPT_SSL_VERIFYPEER的答案不应被接受.问题是"为什么它不适用于curl ",正如Martijn Hols正确指出的那样,它是危险的.

该错误可能是由于没有最新的CA根证书束造成的.这通常是一个包含一组加密签名的文本文件,curl使用这些签名来验证主机的SSL证书.

你需要确保你的PHP安装有这些文件中的一个,并且是最新的(否则在这里下载一个:http://curl.haxx.se/docs/caextract.html).

然后set in php.ini:

curl.cainfo = <absolute_path_to> cacert.pem

如果在运行时设置,请使用(其中$ch = curl_init();):

curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");

Php相关问答推荐

如何以编程方式获取eBay API的授权代码?

msgraph-sdk-php v2如何传递skiptoken到request?

Htaccess-重写对&api.php";的API请求以及对";web.php";的其他请求

如何在函数中定位WooCommerce产品循环

在PHP中读取JSON

WooCommerce-在选定类别中每消费X个金额即可添加免费礼物

PHP Laravel Web应用启动时间&>15秒

在Laravel中从动态嵌套数组中获取值

在WooCommerce Admin产品列表自定义列中显示来自元数据的统计数据

既然setSQLLogger()已被弃用,如何使用中间件在 Doctrine 3 中记录查询执行时间?

woocommerce_available_ payment_gateways 过滤器挂钩多次触发

按日期向 WooCommerce 中的我的帐户订单添加过滤器

致命错误:未捕获 Google_Exception:客户端机密 JSON 文件无效.在 /somepath/lib/vendor/google/apiclient/src/Google/Client.php

无法使用 slim 的父级容器

避免在 WooCommerce 中多次触发挂钩函数

图像未在 Laravel Ajax Crud 中显示

在PHP WordPress插件中使用变量连接路径时的问题解决方法

正则表达式抓取递归括号的内容

如何在光速网络服务器中使用 apache ..htaccess

用于多态服务的 Symfony setter 注入