午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

小程序模板網

微信小程序獲取微信綁定授權手機號getPhoneNumber 全流程及出現手機號帶*號問題

發(fa)布時間:2018-05-09 15:37 所屬欄目:小程序開發教程

微信小程序文檔(dang)中給出如下示例

 

獲取(qu)微信(xin)用戶綁定的手機號,需先調用login接口。

因為需要用戶主動觸發才能發起(qi)獲(huo)取手(shou)機號接口,所(suo)以該功能不(bu)由 API 來(lai)調用,需用&nbsp;<button> 組件的點擊來(lai)觸發。

注(zhu)意:目(mu)前該接口針對非(fei)個人開(kai)發者(zhe),且(qie)完成(cheng)了認證的(de)小程序開(kai)放(fang)。需謹慎使用(yong),若(ruo)用(yong)戶(hu)舉報較多或(huo)被發現在(zai)不必要場景下使用(yong),微信有(you)權(quan)永久回(hui)收該小程序的(de)該接口權(quan)限。

使(shi)用方法

需要將(jiang) <button> 組件(jian) open-type 的值設置為 getPhoneNumber,當(dang)用戶點(dian)擊(ji)并(bing)同意之(zhi)后(hou),可(ke)以(yi)通過 bindgetphonenumber 事件(jian)回(hui)調獲取到(dao)微信服(fu)務器(qi)返回(hui)的加密(mi)(mi)數據, 然后(hou)在第(di)三(san)方服(fu)務端結合(he) session_key 以(yi)及 app_id 進(jin)行解密(mi)(mi)獲取手機號。

注意(yi)

在回調(diao)中調(diao)用 wx.login 登錄(lu),可能(neng)會刷(shua)新登錄(lu)態。此時(shi)服務器(qi)使用 code 換取的 sessionKey 不(bu)是加密時(shi)使用的 sessionKey,導致解密失敗。建議開發者(zhe)提前進行 login;或者(zhe)在回調(diao)中先使用 checkSession 進行登錄(lu)態檢(jian)查,避(bi)免(mian) login 刷(shua)新登錄(lu)態。

例子


<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"&gt; </button>

Page({ 
    getPhoneNumber: function(e) { 
        console.log(e.detail.errMsg) 
        console.log(e.detail.iv) 
        console.log(e.detail.encryptedData) 
    } 
})

返回參數說明(ming)


{encryptedData 解(jie)密(mi)后為以下 json 結構,詳見(jian)加密(mi)數據解(jie)密(mi)算法


    "phoneNumber": "13580006666",  
    "purePhoneNumber": "13580006666", 
    "countryCode": "86",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}
但是(shi)到這里(li)你(ni)會發現其實根(gen)本不詳(xiang)盡尤(you)其是(shi)解密(mi)和錯誤(wu)代碼方面

 

首(shou)先如手(shou)冊所(suo)述(shu),解析加密數據包不(bu)太明(ming)白我給大家貼個示例

 

 

getPhoneNumber: function (e) {
console.log(e.detail.iv);
console.log(e.detail.encryptedData);
wx.login({
success: res => {
console.log(res.code);
wx.request({
url: '//你的解密地址',
data: {
'encryptedData': encodeURIComponent(e.detail.encryptedData),
'iv': e.detail.iv,
'code': res.code
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type':'application/json'
}, // 設置請求的 header
success: function (res) {
if (res.status ==1) {//我后臺設置的返回值為1是正確
//存入緩存即可
wx.setStorageSync('phone', res.phone);
}
},
fail: function (err) {
console.log(err);
}
})
}
})
}

 

后(hou)臺解(jie)析(xi)(xi)代碼就是利用傳過去的(de)三個值(zhi),來(lai)進行解(jie)析(xi)(xi)每個語言解(jie)析(xi)(xi)方式(shi)不同請(qing)下載樣例

微信官方提供了多種編程語(yu)言的示(shi)例代碼(點擊下載)。每種語(yu)言類型的接(jie)口名字均一致。調(diao)用方式(shi)可以(yi)參照示(shi)例。

 

注意(yi)解析(xi)方式(shi)跟解析(xi)用(yong)戶信息是一個解析(xi)方式(shi)!!!!

 

在這(zhe)里(li)小(xiao)編遇到了一個問題解析(xi)回的(de)形式(shi)雖然跟(gen)文檔相同但是!

卻(que)是這(zhe)個樣子(zi)的(de)數據:

 

 

這(zhe)樣的情況(kuang)其實是因為開(kai)發的基礎庫版庫過(guo)低造成的

配(pei)置地點(dian)在這里:

 

 

小編修(xiu)改為v1.9.1之后呈現形式就如同官網(wang)手冊 一樣了(le)

 


{
    "phoneNumber": "13580006666",  
    "purePhoneNumber": "13580006666", 
    "countryCode": "86",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}

至(zhi)此獲取微信綁定的用戶手機號完成!

 

還有(you)一點要(yao)注意你的開(kai)發版(ban)本(ben)上(shang)去了,但(dan)是用戶不一定更新了

所以微(wei)信后臺有(you)這(zhe)樣一個配置~


剩下(xia)的問題歡迎在下(xia)面評論,第一次寫(xie)博客希望對大家有幫助!!!


易優(you)小程(cheng)序(企業(ye)版)+靈活api+前后代碼開源 碼云倉庫:
本文地址://www.jinyoudianli.com/wxmini/doc/course/24397.html 復制鏈接 如(ru)需定制請聯系易優客服咨詢(xun):

工作日 8:30-12:00 14:30-18:00
周六及部分節假日提(ti)供值班服務

易小優
轉人(ren)工 ×