code 换取 session_key
这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。
session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数:
参数 必填 说明
appid 是 小程序唯一标识
secret 是 小程序的 app secret
js_code 是 登录时获取的 code
grant_type 是 填写为 authorization_code
返回参数:
参数 说明
openid 用户唯一标识
session_key 会话密钥
unionid 用户在开放平台的唯一标识符。本字段在满足一定条件的情况下才返回。具体参看UnionID机制说明
1.前端自己请求微信的接口
传入js_code的问题
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
这个本地测试的时候没有一点问题
但是一到审核通过就拿不到;
还是需要通过后台的处理去拿出来
第一步后台拿到 appid 秘钥
前端把js_code传给后台后台接受之后发送微信请求拿出openid
php具体的代码
public function wxopenid(){
$appId = '****************';
$secret = '************************';
$js_code = input('post.js_code');
//创建请求数据
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$secret}&js_code={$js_code}&grant_type=authorization_code";
$data = $this->curl_get_https($url);
print_r($data);
}
/**
* 模拟get进行url请求
* @param string $url
* @param string $param
*/
public function curl_get_https($url){
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
// curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); //返回api的json对象
//关闭URL请求
curl_close($curl);
return $tmpInfo; //返回json对象
}
————————————————
版权声明:本文为CSDN博主「cyclv」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41487694/article/details/79497838