微信小程序之获取微信用户信息篇

首先我们需要知道的登录的逻辑问题。实现一个完善的登录的流程

1. app.js。只是一个获取用户信息的地方存入全局;

2. 如果存在不需要注册,如果不存在就需要注册导航进入注册页面

3. 进入我的页面进入我的页面进行注册更新信息

1.用户进入小程序需要授权

授权

部分接口需要获得用户授权同意后才能调用。此类接口调用时:

  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则短期内不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。

用户进入小程序需要授权,如果用户拒绝一次授权会影响很多操作,需要重新调取

2.重新调取

打开设置界面

用户可以在小程序设置界面(右上角 - 关于 - 右上角 - 设置)中控制对该小程序的授权状态。

开发者可以调用 wx.openSetting 打开设置界面,引导用户开启授权。

以下是官方给出的通过getSetting  调出用户授权的页面

3.如果用户再次拒绝就自己看着办

// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope
wx.getSetting({
    success(res) {
        if (!res.authSetting['scope.record']) {
            wx.authorize({
                scope: 'scope.record',
                success() {
                    // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
                    wx.startRecord()
                }
            })
        }
    }
})

 

具体的授权

 

scope对应接口描述
scope.userInfowx.getUserInfo用户信息
scope.userLocationwx.getLocation, wx.chooseLocation地理位置
scope.addresswx.chooseAddress通讯地址
scope.invoiceTitlewx.chooseInvoiceTitle发票抬头
scope.werunwx.getWeRunData微信运动步数
scope.recordwx.startRecord录音功能
scope.writePhotosAlbumwx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum保存到相册
scope.camera 摄像头

我的前段代码

if (app.globalData.userInfo) {

    console.log(app.globalData.userInfo)

    console.log(1)

    this.setData({

        userInfo: app.globalData.userInfo,

        hasUserInfo: true

    })

} else if (this.data.canIUse) {

    // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

    // 所以此处加入 callback 以防止这种情况

    app.userInfoReadyCallback = res => {

        console.log(res)

        this.setData({

            userInfo: res.userInfo,

            hasUserInfo: true

        })

    }

} else {

    // 在没有 open-type=getUserInfo 版本的兼容处理

    wx.getUserInfo({

        success: res => {

            //console.log(res.userInfo)

            //console.log(res.userInfo.avatarUrl)

            //app.globalData.userInfo = res.userInfo

            console.log(res)

            this.setData({

                userInfo: res.userInfo,

                hasUserInfo: true

            })

        },

        fail:res=>{

            console.log(1)

            // wx.navigateTo({

            // url: '/pages/redesign/redesign'

            // })

            wx.openSetting({

                success: (res) => {

                    console.log(res)

                    res.authSetting = {

                        "scope.userInfo": true,

                        "scope.userLocation": true

                    }

                    wx.getUserInfo({

                        success: res => {

                            console.log(res)

                            this.setData({

                                userInfo: res.userInfo,

                                hasUserInfo: true

                            })

                        },

                    })

                }

            })

        }

    })

}

 

我的获取用户openid代码

	public function wxopenid($js_code){
		$appId = 'xxxxxxxxxxxxxxxxx';
		$secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
		$js_code = I('get.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对象
	}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值