微信小程序开发服务器获取openid过程

我在开发过程中,为了获取用户的唯一表示信息(openid),需要由微信小程序前端调用wx.login()获取登录态code发送至开发服务器,同时再加上appid+appsercet,去微信服务器获取openid,相关的代码,网上都有,笔者在获取openid时,一直卡在获取不到openid上,后面终于发现问题所在,记录一下:问题出在我写的代码中的appid+appsercet是我申请的微信小程序的appid+appsercet,然而实际上,我们在本地开发者工具上开发调试时,经常用的是测试号,微信公众平台会分配给你一个测试号的appid+appsercet,所以后端代码中的appid+appsercet应该是测试号的,后面改正过来后,就可以获取到openid和seesion_key了,同时还要注意,微信公众平台还有域名配置环节,服务器要向微信服务器请求openid时,需要服务端具有域名+SSL证书(即https),并且在微信公众平台的域名配置中配置好域名。

微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html

/**
     * 解密用户敏感数据
     *
     * @param encryptedData 明文,加密数据
     * @param iv            加密算法的初始向量
     * @param code          用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key
     * @return
     */
include_once "wxBizDataCrypt.php";
  function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
  }
$code          = $_GET['code'];
$iv            = $_GET['iv'];
$encryptedData = $_GET['encryptedData'];
$appid      = '';//小程序唯一标识   (在微信小程序管理后台获取)
$appsecret  = '';//小程序的 app secret (在微信小程序管理后台获取)
$grant_type = "authorization_code"; //授权(必填)
 
$params = "appid=".$appid."&secret=".$appsecret."&js_code=".$code."&grant_type=".$grant_type;
$url = "https://api.weixin.qq.com/sns/jscode2session?".$params;
 
$res = json_decode(httpGet($url),true);
//json_decode不加参数true,转成的就不是array,而是对象。 下面的的取值会报错  Fatal error: Cannot use object of type stdClass as array in
$sessionKey = $res['session_key'];//取出json里对应的值
 
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data);
 
if ($errCode == 0) {
    print($data . "\n");
} else {
    print($errCode . "\n");
}

详细代码可参考:https://blog.csdn.net/m0_37865510/article/details/81113462

你可能感兴趣的:(相关配置过程记录)