微信扫码登录access_token的获取问题

mzccvb 2017-08-31 04:51:21
我是第三方网站微信扫码登录获取用户信息,用于之后的企业向用户付款。现在能够获取code,但是之后实在是无法继续通过file_get_contents或者curl方法获取url中的access_token,倒是直接把url打印出来跳转的话可以直接看见access_token那个json对象。请问一下这种情况如何解决?

$code = $_GET["code"];
$appid = "xxxxxxxxxxxxxxx";
$secret = "xxxxxxxxxxxxxxxx";
if (!empty($code))
{
//通过code获得 access_token + openid
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
// $jsonResult = file_get_contents($url);
// print_r($jsonResult);
// 初始化一个 cURL 对象
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
$data = curl_exec($curl);
curl_close($curl);
// 显示获得的数据
print_r($data);
以上,扫码的代码我就没贴出来了,code是可以拿取到的,直接打印url也是没问题的,打印出来的url在浏览器中输入也可以获取到json,但是只要一用file_get_contents或curl就扫码后页面显示无法访问此网站。找了两天还是找不出原因,请求大神帮助!
...全文
1493 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellocgb 2017-09-01
  • 打赏
  • 举报
回复
跳转不好弄用这个试试

function http_get($url){
    $oCurl = curl_init();
    if(stripos($url,"https://")!==FALSE){
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
    }
    curl_setopt($oCurl, CURLOPT_URL, $url);
    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
    $sContent = curl_exec($oCurl);
    $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    if(intval($aStatus["http_code"])==200){
        return $sContent;
    }else{
        return false;
    }
}
mzccvb 2017-09-01
  • 打赏
  • 举报
回复
引用 6 楼 u013083541 的回复:
[quote=引用 4 楼 jhgfkdj 的回复:] [quote=引用 3 楼 u013083541 的回复:] 跳转不好弄用这个试试

function http_get($url){
    $oCurl = curl_init();
    if(stripos($url,"https://")!==FALSE){
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
    }
    curl_setopt($oCurl, CURLOPT_URL, $url);
    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
    $sContent = curl_exec($oCurl);
    $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    if(intval($aStatus["http_code"])==200){
        return $sContent;
    }else{
        return false;
    }
}
还是不行,譬如说我url地址填上百度,我在localhost可以print_r()出来百度首页内容,但是我放到我的公网服务器中,就页面无法加载了……真是搞不懂什么问题了……[/quote] 服务器php的配置有开启curl的的扩展吗[/quote]这个是开了的,那几个dll也丢进system32了,所有自己可能配置的问题都按照网上搜到的试过了……依然还是不行……
hellocgb 2017-09-01
  • 打赏
  • 举报
回复
引用 4 楼 jhgfkdj 的回复:
[quote=引用 3 楼 u013083541 的回复:] 跳转不好弄用这个试试

function http_get($url){
    $oCurl = curl_init();
    if(stripos($url,"https://")!==FALSE){
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
    }
    curl_setopt($oCurl, CURLOPT_URL, $url);
    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
    $sContent = curl_exec($oCurl);
    $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    if(intval($aStatus["http_code"])==200){
        return $sContent;
    }else{
        return false;
    }
}
还是不行,譬如说我url地址填上百度,我在localhost可以print_r()出来百度首页内容,但是我放到我的公网服务器中,就页面无法加载了……真是搞不懂什么问题了……[/quote] 服务器php的配置有开启curl的的扩展吗
hellocgb 2017-09-01
  • 打赏
  • 举报
回复
服务器php的配置有开启curl的的扩展吗
mzccvb 2017-09-01
  • 打赏
  • 举报
回复
引用 3 楼 u013083541 的回复:
跳转不好弄用这个试试

function http_get($url){
    $oCurl = curl_init();
    if(stripos($url,"https://")!==FALSE){
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
    }
    curl_setopt($oCurl, CURLOPT_URL, $url);
    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
    $sContent = curl_exec($oCurl);
    $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    if(intval($aStatus["http_code"])==200){
        return $sContent;
    }else{
        return false;
    }
}
还是不行,譬如说我url地址填上百度,我在localhost可以print_r()出来百度首页内容,但是我放到我的公网服务器中,就页面无法加载了……真是搞不懂什么问题了……
mzccvb 2017-08-31
  • 打赏
  • 举报
回复
引用 1 楼 u013083541 的回复:
用header();试试
header()试过了可以跳转,但是跳转过后就是显示的那个json对象啊,那么该如何直接获取里面的内容呢?
hellocgb 2017-08-31
  • 打赏
  • 举报
回复
用header();试试

3,143

社区成员

发帖
与我相关
我的任务
社区描述
微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,通过二次开发可以将公众账号由一个媒体型营销工具转化成提供服务的产品。
社区管理员
  • 微信开发
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧