zoukankan      html  css  js  c++  java
  • 微信小程序获取微信绑定的手机号

      怎么获取微信绑定手机号呢?我们授权登录的时候,我们只能获取微信登录人员的头像,昵称,性别之类的,而手机号需要二次授权才可以,那么获取手机号都需要哪些条件呢?来看官方文档

      

    获取手机号

    获取微信用户绑定的手机号,需先调用wx.login接口。

    因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。

    注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。

    使用方法

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

    注意

    在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

    代码示例

    <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
    
    Page({
      getPhoneNumber (e) {
        console.log(e.detail.errMsg)
        console.log(e.detail.iv)
        console.log(e.detail.encryptedData)
      }
    })
    

    返回参数说明

    参数类型说明最低版本
    encryptedData String 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法  
    iv String 加密算法的初始向量,详细见加密数据解密算法  

    获取得到的开放数据为以下 json 结构:

    {
        "phoneNumber": "13580006666",
        "purePhoneNumber": "13580006666",
        "countryCode": "86",
        "watermark":
        {
            "appid":"APPID",
            "timestamp": TIMESTAMP
        }
    }
    
    参数类型说明
    phoneNumber String 用户绑定的手机号(国外手机号会有区号)
    purePhoneNumber String 没有区号的手机号
    countryCode String 区号

    给了参数,给了返回值,但是你返回值是加密的。。。。emmm你倒是说怎么解密啊!给个解密的自己去找吧。。。

    然后他解密文档提供了集中语言的解密dome,大家有兴趣可以自己看一下,我贴下我PHP的代码,别看dome三个文件,核心代码就这五行,只需要三个参数 encryptedData加密的密文,iv加密算法起始值,sessionkey用户的sessionkey,就可以了.

    public  function d2($encryptedData,$iv,$sessionkey){
            $aesKey=base64_decode($sessionkey);
            $aesIV=base64_decode($iv);
            $aesCipher=base64_decode($encryptedData);
            $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
            $dataObj=json_decode( $result );
            

      

  • 相关阅读:
    Struts2 动态方法调用
    Struts2 NameSpace空间的使用
    Struts2基本结构
    Android TextView Button按钮 属性
    【转】vue 手动挂载$mount() 获取 $el
    【转】逻辑架构和物理架构
    EntityFramework Code First 构建外键关系,数据库不生成外键约束
    HTML Document 头
    CSS 浏览器兼容
    PageMethods
  • 原文地址:https://www.cnblogs.com/cyk2/p/11328716.html
Copyright © 2011-2022 走看看