위 챗 애플 릿 이 휴대 전화 번호 의 구덩이 밟 기 기록 을 얻다.

머리말
최근 애플 리 케 이 션 개발 에 이런 문제 가 발생 하면 사용자 가 권한 수 여 를 클릭 한 후 휴대 전화 번 호 를 복호화 할 때 첫 번 째 실패,두 번 째 성공 이 발생 한다.한동안 연구 한 끝 에 비교적 합 리 적 인 해결 방안 을 찾 았 습 니 다.여기 서 기록 하고 정리 하면 여러분 에 게 도움 이 되 기 를 바 랍 니 다.
필요 설명

사용자 가 전화 가 져 오기 단 추 를 누 르 면 사용자 가 위 챗 에 설정 한 전화 복호화 를 연락처 입력 상자 에 표시 합 니 다.
구체 코드

      <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키 야.
총결산
위 챗 애플 릿 이 휴대 전화 번 호 를 가 져 와 구 덩이 를 밟 는 것 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 위 챗 애플 릿 이 휴대 전화 번 호 를 가 져 오 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기