微信网页授权,并获取用户头像,昵称等基本信息代码实例

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.weixin.qq.com/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.weixin.qq.com/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数据和密钥token
        if(!isset($json['errcode'])){
            $openid = $json['openid'];
            $url ="https://api.weixin.qq.com/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或者https
    if($is_https ){
        $http = 'https://';
    }else{
        $http = 'http://';
    }
    $string =  $http.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
    return $string;
}


注:博主根据微信官方手册手写的实例,希望能给到给位朋友帮助。这里要注意的细节比较多,state 这个参数要了解一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任聪聪

创作不易,你的打赏是我的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值