微信小程序+Java获取客户授权手机号码

电脑杂谈  发布时间:2019-10-11 18:03:14  来源:网络整理

java useragent 微信_手机微信java_java微信

小程序内可以直接借助授权获得客户微信号绑定的电脑号码或客户添加的其它手机号码,这样可以并且小程序在进行账户的身份可控上又增加了一步,那么需要怎样来获取手机号码呢?这篇文章就和大家一起来研究一下。

微信小程序+Java获取用户授权手机号码

值得注意的是,如果您要获取手机号码首先要满足如下要求:

java微信_java useragent 微信_手机微信java

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

首先,我们应该使用button模块,其open-type的值要修改为getPhoneNumber,可参考button · 小程序,然后绑定bindgetphonenumber的回调函数,在用户单击图标,弹起的授权框允许授权以后回调函数内会返回一个event的对象,在其对象的detail下分别存在两个值(可参考《获取手机号 · 小程序》):

参数类型说明

java useragent 微信_java微信_手机微信java

encryptedData

String

包括敏感数据在内的完整用户信息的加密数据

手机微信java_java微信_java useragent 微信

String

加密算法的初始向量

接下来我们要模拟一次登陆,调用wx.login,然后再授权失败的回调中获得授权code值,接着将上述的encryptedData与iv一并传送至服务端,接下来就起初进行服务端解密过程。

java微信_java useragent 微信_手机微信java

服务端接收到encryptedData、iv与code值然后,进行微信授权登陆一次,接口可参考:《code2Session · 小程序》手机微信java,然后我们应该获得返回值中的session_key主键,即为会话秘钥。

在微信中提供了多种编程语言的样例代码,但是就是没有Java的,不知道是不是微信团队从来不写Java :evil: ,于是我们就自己实现了一个WXBizDataCrypt手机微信java,具体实现如下:

上述代码中并没有实现签名校验的相关业务,可自行推动

首先我们应该建立WXBizDataCrypt的实体,传入小程序的appid与我们获取的session_key,然后再读取decryptData方法传入encryptedData与iv即可进行解读,如果返回的值为NULL或抛出异常则为解读失败,解密成功以后可以获得返回对象的countryCode以及purePhoneNumber组成完整的含区号的手机号码。

在微信开放的相关开放接口中,对于客户的隐私数据这一块处理都是需要效验解密的,当然这一点也是为了数据安全,不过不得不吐槽有时候官方的文档真的是写的让人摸不着大脑,比如微信支付中的timestamp与timeStamp


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-125964-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 之墨
        之墨

        感觉中国现在是钱头外交

      热点图片
      拼命载入中...