위 챗 애플 릿 사용자 권한 수여 최 적 실천 지침
7021 단어 위 챗 애플 릿사용자권한 을 부여 하 다
위 챗 애플 릿 을 개발 할 때 사용자 권한 을 가 져 오 는 페이지 를 자주 사용 합 니 다.예 를 들 어 로그 인 하려 면 개인 정 보 를 얻 고 얼굴 인식 을 하려 면 카메라 권한 을 가 져 야 합 니 다.위치 지도 기능 을 하려 면 사용자 의 위치 권한 을 가 져 야 합 니 다.그림 을 사용자 의 앨범 에 저장 하려 면 앨범 권한 을 가 져 야 합 니 다.
위 챗 의 scope 프로 세 스:
대부분의 기능 은 권한 이 부여 되 지 않 아 사용 할 수 없습니다.일반적으로 저 는 권한 을 열 었 는 지 확인 한 다음 에 열 었 으 면 계속 사용 합 니 다.열 리 지 않 으 면 계속 권한 을 요청 합 니 다.거절 할 경우 힌트 를 주 고 사용자 가 수 동 으로 설정 페이지 를 열 수 있 도록 합 니 다.
\#정상 논리
그러나 이 방법 을 쓰 면 아마 이 럴 것 이다.
wx.getSetting({
success(res)=>{
if (!res.authSetting['scope']) {
console.log(' ')
wx.authorize({
scope: 'scope',
success() {
console.log(' ')
},
fail() {
console.log(' , ')
wx.showModal({
title: ' ',
content: ' xxx ',
showCancel: false,
success(res) {
if (res.confirm) {
console.log(' ')
wx.openSetting({
success(res) {
console.log(res.authSetting)
res.authSetting = {
"scope.camera": true,
}
}
})
} else if (res.cancel) {
console.log(' ')
}
}
})
}
})
} else {
console.log(' ')
}
},
fail(err)=>{}
})
지금 1202 년 이 되 었 는데,이 방법 을 쓰 고 업무 논리 가 섞 여 있다 는 것 은 정말 끔찍 하 다.저 는 참 을 수 없습니다.함 수 를 봉인 하 는 데 시간 이 좀 걸 렸 습 니 다.지정 한 권한 이름 만 들 어 오 면 사용자 가 권한 을 열 었 는 지 확인 할 수 있 습 니 다.열 리 지 않 으 면 알림 이 열 리 지 않 으 면 페이지 를 수 동 으로 열 수 있 습 니 다(어쨌든 열 어야 합 니 다).
코드 세 션 을 쓰 려 고 했 는데 도구 에서 openSetting 을 호출 할 때 문제 가 있어 서 포기 할 수 밖 에 없 었 습 니 다.
\#코드 디 테 일
// utils/auth.js
/**
* @param {
* authType:
* }
*/
module.exports = async function wxAuth(authType) {
// scopeArr ref: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
let scopeArr = [
"userInfo",
"userLocation",
"userLocationBackground",
"address",
"invoiceTitle",
"invoice",
"werun",
"record",
"writePhotosAlbum",
"camera",
];
if (scopeArr.indexOf(authType) == -1) {
return console.error(" ");
}
let scope = "scope." + authType;
let isUserSet = await getSettingSync(scope);
if (isUserSet) return true;
let isAuthorize = await authorizeSync(scope);
if (isAuthorize) return true;
let showModalMes = await showModalSync(scope);
//
if (showModalMes) {
//
let openSet = await openSettingSync(scope);
if (openSet) {
return true;
} else {
return false;
}
} else {
//
return false;
}
};
//
function getSettingSync(scope) {
return new Promise((resolve, reject) => {
wx.getSetting({
success(res) {
if (!res.authSetting[scope]) {
console.log(" ");
resolve(false);
} else {
console.log(" ");
resolve(true);
}
},
fail(err) {
reject();
console.error("wx.getSetting Error", err);
},
});
});
}
//
function authorizeSync(scope) {
return new Promise((resolve, reject) => {
wx.authorize({
scope: scope,
success() {
resolve(true);
console.log(" ");
},
fail() {
resolve(false);
console.log(" ");
},
});
});
}
//
function showModalSync(scope) {
return new Promise((resolve, reject) => {
wx.showModal({
title: " ",
content: ` , ${scope} `,
confirmText: " ",
showCancel: false,
success(res) {
if (res.confirm) {
console.log(" ");
resolve(true);
} else if (res.cancel) {
resolve(false);
}
},
fail(err) {
reject();
console.error(err, "wx.showModal Error");
},
});
});
}
// ,
function openSettingSync(scope) {
return new Promise((resolve, reject) => {
wx.openSetting({
success(res) {
console.log(res.authSetting);
if (res.authSetting[scope]) {
resolve(true);
} else {
resolve(false);
}
},
fail(err) {
reject();
console.error(err, "wx.openSetting Error");
},
});
});
}
\#사용JS 코드 참조:
import auth from './../../utils/auth'
Page({
data:{
isCameraAuth: false
},
onLoad(){
//
auth('camera').then(() => {
console.log(' ')
this.setData({
isCameraAuth: true
}
}).catch((err) => {
console.error(' ');
})
}
})
wxml 코드 참조:
<!-- index.wxml -->
<view> :{{isCameraAuth}}</view>
<camera wx:if="{{isCameraAuth}}" style="width: 100%; height: 300px;"></camera>
\#미리 보기이 를 위해 개발 도구 에서 미리 보 기 를 직접 열 수 있 는 데모데모 미리보기를 만 들 었 습 니 다.
총결산
위 챗 애플 릿 사용자 권한 수여 에 관 한 최고의 실천 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 위 챗 애플 릿 사용자 권한 수여 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 지지 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.