微信小程序授权获取手机号:
开发微信小程序的时候获取手机号完整案例,可直接使用。要求:企业号认证
wxml:
<button class="btn" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" >获取手机号</button>
js:
getPhoneNumber: function(e) {
console.log("手机号iv");
console.log(e.detail.iv)
console.log("手机号encryptedData");
console.log(e.detail.encryptedData)
var that=this;
wx.login({
success: res => {
console.log(res.code);
wx.request({
url: "后台解密接口",
data:{
data:e.detail.encryptedData,
iv: e.detail.iv,
code:res.code,
Appid:config.Appid,
SecretKey:config.SecretKey
},
success:function(data){
console.log("返回手机号");
console.log(data.userPhone);
}
})
}
})
}
后台接口实现(C#):
/// <summary>
/// 获取手机号
/// </summary>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public JObject getUserPhone()
{
string Code = Request["Code"];
string EncryptedData = Request["EncryptedData"];
string IV = Request["IV"];
string Appid = Request["Appid"];
string SecretKey = Request["SecretKey"];
string userPhone = "";
// 获取session_key,openid
string value =getOperId(Appid, SecretKey, Code); //调用方法得到返回值
JObject obj = (JObject)JsonConvert.DeserializeObject(value);
string OpenId = obj["openid"].ToString();//用户唯一标识
string Session_key = obj["session_key"].ToString();//会话密钥
try
{
byte[] encryData = Convert.FromBase64String(EncryptedData);
RijndaelManaged rijndaelCipher = new RijndaelManaged();
rijndaelCipher.Key = Convert.FromBase64String(Session_key);
rijndaelCipher.IV = Convert.FromBase64String(IV);
rijndaelCipher.Mode = CipherMode.CBC;
rijndaelCipher.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
byte[] plainText = transform.TransformFinalBlock(encryData, 0, encryData.Length);
string result = Encoding.Default.GetString(plainText);
dynamic model = Newtonsoft.Json.Linq.JToken.Parse(result) as dynamic;
userPhone = model.phoneNumber;
}
catch (Exception ex)
{
throw;
}
return (JObject)JsonConvert.DeserializeObject("{'errcode':'0','userPhone':'" + userPhone + "','OpenId':'" + OpenId + "'}");
}
#region 获取用户OpenId
public static string getOperId(string AppId,string AppSecret,string Code)
{
string sRet = "{\"errcode\":\"-3\",\"errmsg\":\"未执行\"}";
try
{
string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId +
"&secret=" + AppSecret +
"&js_code=" + Code +
"&grant_type=authorization_code";
sRet = OpenReadWithHttps(url, "", "utf-8", "application/json", "get");
}
catch (Exception ex)
{
sRet = "{\"errcode\":\"-2\",\"errmsg\":\"" + ex.Message + "\"}";
}
return sRet;
}
#endregion
这就是一个完整的微信小程序获取手机号功能了,希望能够帮助到你!喜欢的朋友可以添加关注哦!也可以关注微信公众号“码小鉴”同步更新