html中的js片段:
var this_page_url = "当前界面地址";//通过函数自己获取var openid = "通过模板赋值活get获取的";var appID = "您的公众号appid";var nickname = "通过模板赋值活get获取的";var headimgurl = "通过模板赋值活get获取的"; var redirectUri = "你的回调地址}/这个是受理用户数据的方法路径"; //用户头像和昵称按照自己的需要进行填写 if(openid == null || openid == ''|| openid == undefined){ // 通过这个判断openid是否存在进行html页面里的跳转var recatTo= "https://open./connect/oauth2/authorize?appid=" + appID + "&redirect_uri=" + redirectUri + "&response_type=code&scope=snsapi_userinfo&state=0#wechat_redirect";window.location.href = recatTo;}
php文件中的代码片段:
<?php$code = isset($_GET['code'])?$_GET['code']:'';//或者使用框架自带的request 方法获取这个code$this_page_url = ‘需要传递这个当前地址url 用于登录以后的还原’;//可以使用_getNowUrl() 这个自定义函数$appSecret =‘公众号密钥’;$appId = ‘公众号appid’;$url = "https://api./sns/oauth2/access_token?appid=$appId&secret=$appSecret&code={$code}&grant_type=authorization_code";$r = file_get_contents($url);$json=(array)json_decode($r);//这个是从微信获取到的openid数据和密钥tokenif(!isset($json['errcode'])){$openid = $json['openid'];$url ="https://api./sns/userinfo?access_token=".$json['access_token']."&openid=".$json['openid'];$res = file_get_contents($url);$json = (array)json_decode($res);//这里是将返回过来的json对象转成数组$headimgurl = $json['headimgurl'];$nickname = $json['nickname'];// 将相关获取到的 数据信息 openid、昵称、头像等)地址参数跳回前端页面header("Location:'.$this_page_url .'?openid=$openid&nickname=$nickname&headimgurl=$headimgurl");}return ‘获取失败’;
php使用的自定义函数:
//获取完整当前路径function _getNowUrl(){//检测是否是https 或者http$is_https = false;if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {$is_https = true;} elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {$is_https = true;} elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {$is_https = true;}//判断是否是http或者httpsif($is_https ){$http = 'https://';}else{$http = 'http://';}$string = $http.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];return $string;}
注:博主根据微信官方手册手写的实例,希望能给到给位朋友帮助。这里要注意的细节比较多,state 这个参数要了解一下。