`
王之子
  • 浏览: 110291 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

微信登录获取 openid 失败原因

阅读更多



 

 

今天再开发网站微信登录的时候,用 curl_init 无法获取 openid,代码如下

 

 $code = isset($_GET['code']) ? trim($_GET['code']) : '';
    $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.WX_APPID.'&secret='.WX_SECRET.'&code='.$code.'&grant_type=authorization_code';
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HEADER, 0);// 显示返回的Header区域内容   
    curl_setopt ($ch, CURLOPT_TIMEOUT, 30);// 设置超时限制
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);// 链接超时限制
    curl_setopt ($ch, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));//设置 http 头信息
    curl_setopt ($ch, CURLOPT_ENCODING, 'gzip,deflate');//添加 gzip 解码的选项,即使网页没启用 gzip 也没关系 
    $content = curl_exec($ch);

 

 

 

后来发现跟 https 有关,加上下面这两个选项就可以了

 

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST,0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,0); 

 

 

 

由于 CURLOPT_SSL_VERIFYPEER 的预设值为 TRUE 是要验证伺服器凭证的,所以当拜访 https 网站时,若未做任何 SSL 相关设定,会出现以下错误。

Error Number: 60

Error Message: SSL certificate problem, verify that the CA cert is OK. Details:

error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

如果只是要拜访 https 网站,但不会来回传递敏感信息,可以把 CURLOPT_SSL_VERIFYPEER 设定为 FALSE,代表可以盲目接受任何伺服器凭证。

 

而当 CURLOPT_SSL_VERIFYPEER 为 FALSE 时,其他诸如 CURLOPT_SSL_VERIFYHOST, CURLOPT_CAINFO, CURLOPT_CAPATH 等设定,都不具任何意义。

 

 

原文链接:http://woqilin.blogspot.com/2016/04/openid.html

  • 大小: 41.8 KB
分享到:
评论

相关推荐

    php获取微信code.openid.名字和头像

    2. **获取openid**:收到code后,你需要向微信API发送POST请求,换取access_token和openid。这通常在回调函数中完成。代码如下: ```php function get_access_token_and_openid($code) { $url = ...

    微信小程序获取用户openId的实现方法

    微信小程序获取用户openId的实现方法 前端: wx.login({ success: function (res) { res.code }) 获取到code后,传到后台, 然后请求微信接口 ...把参数替换为自己的参数,这个接口就直接返回openId了 ...

    关于微信小程序生产环境体验版获取不到openId的问题(大坑)

    我们知道openid是微信用户验证的重要标识,支付功能严重依赖这个东西,之前我们做微信支付的时候是通过在微信客户端直接调用官方接口,通过传code参数来调用,下面这样 getOpenId(){ //获取用户的openid let _this=...

    基于reactnativewechat实现的微信登录

    5. **服务器端处理**:服务器接收到`code`后,使用AppSecret向微信API发送请求,获取OpenID(用户的唯一标识)和access_token。然后,可以使用这些信息查询或创建用户账户,完成登录过程。 6. **处理回调**:在...

    使用 UniApp 实现小程序的微信登录功能

    首先,我们需要理解在使用UniApp开发微信小程序的微信登录过程中会涉及到的技术点,包括微信登录的流程、如何在UniApp中封装登录逻辑、如何在小程序中获取用户信息、以及如何将获取的用户信息安全地存储和使用。...

    js微信网页授权登录获取详细信息

    - **权限范围**:根据需求选择适当的权限,如snsapi_base(基础信息)和snsapi_userinfo(详细信息),前者不需用户授权即可获取openid,后者需要用户同意授权才能获取更多信息。 - **处理授权错误**:需要妥善...

    C#微信小程序服务端获取用户解密信息实例代码

    为了获取用户的`openid`和`session_key`,代码构建了一个URL并调用了微信提供的API `sns/jscode2session`。这个API使用`code`换取用户的`openid`和`session_key`,这两个值对于解密用户信息至关重要。调用`...

    asp.net mvc core 集成微信登录功能

    return BadRequest("微信登录失败"); } // 用户认证成功后,可以在这里处理登录逻辑,例如保存用户信息或创建会话 // ... return Redirect("/Home/Index"); // 登录成功后的重定向页面 } } ``` 为了展示...

    完美集成原生微信登录

    2. **下载SDK**:获取适用于你开发语言的微信SDK,例如Android SDK或iOS SDK,这些SDK包含了实现微信登录所需的所有函数和类。 3. **初始化SDK**:在应用启动时,使用AppID和AppSecret初始化微信SDK,这一步通常在...

    【西瓜】微信登录 20170213

    前者仅获取OpenID,后者则能获取更详细的用户资料,但需要用户授权。 4. **错误处理**:微信登录过程中可能出现各种异常情况,如网络问题、授权失败等,插件应具备完善的错误处理机制,确保用户体验。 5. **兼容性...

    按项目微信授权获取名称和头像

    使用获取到的Access Token和OpenID,我们可以进一步请求微信接口,获取用户的基本信息,包括昵称(name)和头像(avatar)等。注意,根据微信的隐私政策,这通常需要用户明确授权才能获取。 2. **按项目进行业务...

    android开发微信登录授权且获取用户信息

    在Android应用开发中,集成微信登录授权并获取用户信息是一项常见的功能需求,这不仅可以提升用户体验,也能方便地进行用户身份验证。本教程将详细介绍如何在Android应用中实现微信登录授权及获取用户信息的过程。 ...

    springboot+微信端登录demo

    授权成功后,微信会返回一个access_token,通过这个token,你可以调用微信的API获取用户的基本信息,如openid、昵称、头像等。这些信息可以用来创建或关联到你的系统用户。 6. **登录逻辑**: 在用户完成微信授权...

    Android开发 QQ登录、微信登录、微博登录

    综上所述,Android应用集成QQ、微信、微博登录涉及SDK集成、授权流程、用户信息获取以及登录状态管理等多个环节。通过这些步骤,开发者可以为用户提供更加便捷、个性化的登录方式,同时也要注意用户隐私和数据安全。

    友盟实现第三方登陆(微博、微信、QQ)

    在移动应用开发中,集成第三方登录服务是一种常见的需求,它为用户提供便捷的登录方式,比如通过微博、微信、QQ等社交账号直接登录。本篇将详细介绍如何使用友盟(Umeng)来实现这些社交平台的第三方登录功能。 ...

    微信小程序登录界面设计(可以登录)

    - 使用wx.login()接口获取用户的OpenID,然后通过微信开放平台接口换取用户信息。 5. **安全与隐私**: - 用户数据加密:密码在传输前应进行加密处理,防止数据在传输过程中被截获。 - 隐私政策:登录界面需提示...

    微信小程序登录全局状态401处理

    微信小程序登录通常采用OAuth 2.0授权框架,用户通过微信小程序的`wx.login()`接口获取临时登录凭证(code),然后将code发送到服务器,服务器通过微信API换取用户的OpenID和Session Key,以此来标识用户身份。...

Global site tag (gtag.js) - Google Analytics