小程序开发公司分析如何开发获取用户基本信息

2018/5/1 19:54:05
摘要: 微信小程序平台运营时,要获取获取用户的基本信息,是需要用户授权的,而这种授权获取的开发,需要调用wx.login接口、login接口等

微信小程序平台运营时,要获取获取用户的基本信息,是需要用户授权的,而这种授权获取的开发,需要调用wx。login接口、login接口等。本文针对小程序用户基本信息获取的问题,说一下一些要注意的内容,并提供一些示例代码供大家参考。

1、用户授权与用户信息获取

(1)获取用户信息

 当 withCredentials 为 true 时,要求调用wx.login接口,或者此前已经调用过且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。

(2)用户授权,scope。userInfo。

wx。getUserInfo({

  withCredentials//是否带上登录态信息

  lang//指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。默认为en。

  success: function(res) {//接口调用成功的回调函数

    var userInfo = res.userInfo//用户信息对象,不包含 openid 等敏感信息

    var userInfo = res.userInfo

    var nickName = userInfo.nickName

    var avatarUrl = userInfo.avatarUrl

    var gender = userInfo。gender //性别 0:未知、1:男、2:女

    var province = userInfo.province

    var city = userInfo。city

    var country = userInfo.country

    res。rawData//不包括敏感信息的原始数据字符串,用于计算签名

    res.signature//使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息

    res。encryptedData//包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法

    res。iv//加密算法的初始向量,详细见加密数据解密算法

  },

  fail/complete: function(){//接口调用失败/结束的回调函数

  }

})

 

encryptedData 解密后为以下 json 结构,详见加密数据解密算法

{

    "openId": "OPENID",

    "nickName": "NICKNAME",

    "gender": GENDER,

    "city": "CITY",

    "province": "PROVINCE",

    "country": "COUNTRY",

    "avatarUrl": "AVATARURL",

    "unionId": "UNIONID",

    "watermark":

    {

        "appid":"APPID",

    "timestamp":TIMESTAMP

    }

}

  2、getPhoneNumber(OBJECT)

 (1)说明

getPhoneNumber(OBJECT)即获取微信用户绑定的手机号,需先调用login接口。这是因为在获取微信用户绑定的手机号时,是需要用户主动去触发才能发起获取接口,所以这个用户信息获取的功能不能由API接口来调用,需要用点击组件来触发。

 (2)使用方法

获取用户绑定的手机号时,需要将组件open-type的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据,然后在第三方服务端结合 session_key 以及 app_id,通过解密而获取手机号。

3、注意点

在回调中调用wx.login登录,可能会刷新登录态。此时服务器使用code换取的sessionKey并不是加密时使用的sessionKey,所以会导致解密失败。在这里我们建议开发者可以提前进行login,或者在回调前先使用checkSession进行登录态检查,以免login刷新登录态而导致解密失败。示例代码如下:

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> </button>

Page({

    getPhoneNumber: function(e) {

        console.log(e.detail.errMsg)

        console.log(e.detail.iv) //加密算法的初始向量,详细见加密数据解密算法

        console.log(e.detail.encryptedData) //包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法

    }

})

 

encryptedData 解密后为以下 json 结构,详见加密数据解密算法

{

    "phoneNumber": "13580006666",  //用户绑定的手机号(国外手机号会有区号)

    "purePhoneNumber": "13580006666", //没有区号的手机号

    "countryCode": "86",//区号

    "watermark":

    {

        "appid":"APPID",

        "timestamp":TIMESTAMP

    }

}

声明:文章"小程序开发公司分析如何开发获取用户基本信息"为互诚科技—微信小程序开发公司的原创文章,转载请注明出处,谢谢合作!
标签:小程序干货
电话咨询:18011971195(黄先生)
在线留言:
微信扫码,关注我们
相关文章
  • 企业进行微信小程序开发,一定要考虑的那些方面

    企业在微信小程序开发之前以及过程之中,除了要考虑如何去满足企业本身的需求之外,还要考虑最终的成果是否能满足用户的体验需求,只有将这两个方面充分考虑到并且有充足的准备,才能在后续上线时能有较好的发展。而这两个方面又可以延伸出

  • 广州企业外包微信小程序开发要注意什么

    广州企业千千万,微信小程序开发公司也不少,相较于企业自己开发小程序,选择开发公司会比较省时省力。不过虽然如此,但是这并不代表企业就没有注意事项,在选择好开发公司之后,自己的也要融入到开发的工作当中,将自己的想法全面传达给开发公司

  • 微信小程序新增四项能力,信息展示开发越强大

    微信官方在小程序功能的开放之路真的是越走越远,现在又就着信息展示模块来开放了四项新能力,来提升用户的体验以及小程序运营者的管理体验,小编只能说这次的事情搞得依旧深得人心。按照写作流程,在夸完新能力深得人心之后,小编就要来介绍一下这四项新能力了。

  • 手势开发研究,微信小程序的单触摸电与多触摸点

    在微信小程序的开发过程中,手势常常被应用在canvas、交互的开发中,所以手势对一些开发效果来说是比较重要的

  • 一步教您学会微信小程序的上线发布流程

    小编在找了一资料之后,又根据公司在小程序开发业务上的实际情况,整理了一下小程序调试发布的步骤详细内容

  • 分享:微信小程序开发过程中,常用的功能代码总结

    开发者进行微信小程序开发的时候,有一些比较常用的功能代码是可以学习使用的,根据基础的功能代码进行小调小整,就能调整成自己想要的代码

河北快三 河北快三 河北快三 河北快三 河北快三 河北快三 河北快三 河北快三 河北快三 河北快三