前端代码
data() {return {openid: "",server: '',code:''};
},
mounted() {this.getCode()
},
methods:{getCode() {this.code = '';var callback_url = '回调地址'; var appid = 'APPID';this.code = this.getUrlCode().code; if (this.code == null || this.code === '') {window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(callback_url)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;} else {this.getUserInfo();}},getUserInfo() {let token = uni.getStorageSync("token");const header = {"Content-Type": "application/json","Authorization": token};let data = {}data.code = this.codedata.appid= '你的appid'data.secret= '你的secret'uni.request({url: 'https://api.ecom20200909.com/Api/getOpenid',data: data,header: header,timeout: 20000,method: 'POST',dataType: 'json',success: (res) => {this.setOpenid(res.data.openid);uni.setStorageSync('openid', res.data.openid)}})},getUrlCode() {var url = location.search;var theRequest = new Object();if (url.indexOf('?') != -1) {var str = url.substr(1);var strs = str.split('&');for (var i = 0; i < strs.length; i++) {theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];}}return theRequest;},
}
后端php代码
public function getOpenid(){$code = input('post.code');$param["appid"]=input('post.appid');$param["secret"]=input('post.secret');$param["code"]=$code;$param["grant_type"]="authorization_code";$json = $this->curlPost("https://api.weixin.qq.com/sns/oauth2/access_token",$param);$rv=json_decode($json,true);return json($rv);
}public function curlPost($url = '', $postData = '', $options = array()) {if (is_array($postData)) {$postData = http_build_query($postData);}$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);curl_setopt($ch, CURLOPT_TIMEOUT, 30); if (!empty($options)) {curl_setopt_array($ch, $options);}curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$data = curl_exec($ch);curl_close($ch);return $data;
}