위 챗 애플 릿 이 휴대 전화 번호 의 구덩이 밟 기 기록 을 얻다.
최근 애플 리 케 이 션 개발 에 이런 문제 가 발생 하면 사용자 가 권한 수 여 를 클릭 한 후 휴대 전화 번 호 를 복호화 할 때 첫 번 째 실패,두 번 째 성공 이 발생 한다.한동안 연구 한 끝 에 비교적 합 리 적 인 해결 방안 을 찾 았 습 니 다.여기 서 기록 하고 정리 하면 여러분 에 게 도움 이 되 기 를 바 랍 니 다.
필요 설명
사용자 가 전화 가 져 오기 단 추 를 누 르 면 사용자 가 위 챗 에 설정 한 전화 복호화 를 연락처 입력 상자 에 표시 합 니 다.
구체 코드
<view class="cu-form-group">
<view class="title text-black"> </view>
<input class="radius" name="mobile" placeholder=" " value="{{detail.mobile}}" bindinput="onInputMobile"></input>
<button bindgetphonenumber="getPhoneNumber" class="cu-btn line-blue sm" openType="getPhoneNumber"> </button>
</view>
우선 애플 릿 button 구성 요소 가 필요 하고 openType="getPhone Number"를 설정 해 야 합 니 다.
onLoad: async function () {
this.getSessionKey()
},
async getSessionKey() {
const { code } = await wx.login()
const res = await Index.getSessionKey({
code
})
if (res.code == 1) {
this.setData({
session_key: res.data
})
}
},
getPhoneNumber: async function (e) {
if (e.detail.errMsg === "getPhoneNumber:ok") {
const res = await Index.getPhone({
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
session_key: this.data.session_key
})
if (res.err == 0) {
wx.showToast({
title: ' , ',
icon: 'none'
})
return
}
const detail = this.data.detail
detail.mobile = res.err.phoneNumber
this.setData({
detail
})
} else if (e.detail.errMsg === "getPhoneNumber:fail user deny") {
wx.showModal({
title: ' ',
content: ' , ',
showCancel: false,
confirmText: " "
})
}
},
onLoad 수명 주기 내 에 로그 인 코드 를 가 져 오고 코드 코드 를 서버 에 보 내 session 을 가 져 옵 니 다.key서버 획득 sessionkey 참고 하 세 요.
사용자 가 전화 획득 버튼 을 클릭 하면 sessionkey 및 가 져 온 iv,encrypted Data 를 서버 에 보 내 복호화 합 니 다.
이렇게 하면 사용자 의 휴대 전화 번 호 를 얻 을 수 있다.
구덩이.
이전에 우리 의 방안 은 사용자 가 전화 가 져 오기 단 추 를 클릭 한 후에 getPhone Number 함수 에서 wx.logon()을 직접 호출 하여 code,iv,encrypted Data 를 서버 에 보 내 고 서버 에서 먼저 code 를 가지 고 session 을 가 져 오 는 것 입 니 다.key,그리고 iv,encrypted Data 와 결합 하여 복호화 합 니 다.이렇게 하면 첫 번 째 복호화 실패 가 발생 하고 다시 단 추 를 누 르 면 복호화 인 터 페 이 스 를 호출 하 는 데 성공 할 수 있 습 니 다.그리고 5-6 분 간격 으로 또 이런 상황 이 발생 한다.
wx.checkSession(Object object)을 호출 하여 로그 인 상태 가 만 료 되 었 는 지 확인 하 는 것 도 성공 적 입 니 다.
추측 하 다.
나중에 생각해 보 니 왜 getPhone Number 함수 에서 wx.login 을 호출 하고 서버 에서 code 를 session 으로 바 꾸 었 는 지key,그리고 iv,encrypted Data 와 결합 하여 복호화 하면 안 됩 니까?wx.login 을 onLoad 에 넣 고 session 가 져 오기키 면 되 는데?
wx.login 호출 시 위 챗 서버 를 새로 고 치 는 session 이 라 고 생각 합 니 다.key,getPhone Number 에서 직접 wx.login 을 조정 합 니 다.위 챗 서버 가 새로 고침 되 지 않 았 을 수도 있 습 니 다.서버 에서 들 고 복호화 할 때 사용 하 는 것 은 지난번 만 료 된 session 입 니 다.key,그래서 두 번 째 후에 야 성공 할 수 있 습 니 다.wx.login 을 onload 에 넣 으 면 올 수 있 는 session키 야.
총결산
위 챗 애플 릿 이 휴대 전화 번 호 를 가 져 와 구 덩이 를 밟 는 것 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 위 챗 애플 릿 이 휴대 전화 번 호 를 가 져 오 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.