목차
Background
Process
app.js
httpUtils.js
요청 캡슐화
login
auth.js
프로젝트 주소
위챗 애플릿 미니 프로그램 개발 미니 프로그램의 요청 캡슐화에 대해(상세 프로세스 포함)

미니 프로그램의 요청 캡슐화에 대해(상세 프로세스 포함)

Sep 11, 2021 pm 05:07 PM
request

Background

이전 애플릿 코드가 혼란스러워서 새 프로젝트 시작 시 WeChat 애플릿

Process

전체 프로세스에 대해 먼저 이야기해 보겠습니다.

1.appjs를 입력한 후 사용자 정보를 가져옵니다. 로그인하지 않은 경우 기본적으로 로그인됩니다. 여기서는 오류 처리가 수행되지 않습니다.

2 작업을 수행하려면 사용자가 승인에 동의해야 합니다. . 승인에 동의하지 않으면 항상 승인 페이지로 이동합니다

3. 승인 페이지에서 승인 로그인을 클릭한 후 로그인 인터페이스를 호출하면 승인 받기가 호출되는 페이지로 돌아갑니다.

app.js

onLaunch

appSelf = this;
        // 应用程序第一次进入,获取用户信息,不做任何错误处理
        userInfo().then( (res)=>{
            console.log(res);// 打印结果
            if (!res.code) {
                appSelf.globalData.userInfo = res
            }
        }).catch( (errMsg)=>{
            console.log(errMsg);// 错误提示信息
        });
로그인 후 복사

httpUtils.js

요청 캡슐화

const request = function (path, method, data, header) {
    let user_id = "";
    let token = "";
    try {
        user_id = wx.getStorageSync(USER_ID_KEY);
        token = wx.getStorageSync(TOKEN_KEY);
    } catch (e) {}
    header = header || {};
    let cookie = [];
    cookie.push("USERID=" + user_id);
    cookie.push("TOKEN=" + token);
    cookie.push("device=" + 1);
    cookie.push("app_name=" + 1);
    cookie.push("app_version=" + ENV_VERSION);
    cookie.push("channel=" + 1);
    header.cookie = cookie.join("; ");
    return new Promise((resolve, reject) => {
        wx.request({//后台请求
            url: API_BASE_URL + path,
            header: header,
            method: method,
            data: data,
            success: function (res) {
                if (res.statusCode !== 200) {
                    reject(res.data)
                } else {
                    if (res.data.code === 20006) {
                        login().then( (res)=>{
                            resolve(res)
                        }).catch( (errMsg)=>{
                            reject(errMsg);
                        })
                    }
                    resolve(res.data)
                }
            },
            fail: function (res) {
                reject("not data");
            }
        });
    });
}
로그인 후 복사

login

const login = function () {
    try {
        wx.removeStorageSync(USER_ID_KEY)
        wx.removeStorageSync(TOKEN_KEY)
    } catch (e) {}
    return new Promise((resolve, reject) => {
        wx.login({
            success: res => {
                let code = res.code;
                // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
                wx.getUserInfo({
                    withCredentials: true,
                    success: res => {
                        let userInfo = res.userInfo;
                        let name = userInfo.nickName;
                        let avatar = userInfo.avatarUrl;
                        let sex = userInfo.gender;
                        let data = {
                            code: code,
                            encryptedData: res.encryptedData,
                            iv: res.iv,
                            name: name,
                            avatar: avatar,
                            sex: sex,
                            from: FROM,
                        };
                        request("/api/user/login/byWeChatApplet", "POST", data).then( (res)=>{
                            if (!res.code) {
                                try {
                                    wx.setStorageSync(USER_ID_KEY, res.user_id);
                                    wx.setStorageSync(TOKEN_KEY, res.token)
                                } catch (e) {
                                    reject(JSON.stringify(e));
                                }
                            }
                            resolve(res)
                        }).catch( (errMsg)=>{
                            reject(errMsg)
                        });
                    },
                    fail: function (res) {
                        console.log(res);

                        if (res.errMsg && res.errMsg.startsWith("getUserInfo:fail") && res.errMsg.search("unauthorized") != -1) {
                            // 跳转授权页面
                            wx.navigateTo({
                                url: '/pages/auth/auth'
                            })
                            return;
                        }
                        wx.getSetting({
                            success: (res) => {
                                if (!res.authSetting["scope.userInfo"]) {
                                    // 跳转授权页面
                                    wx.navigateTo({
                                        url: '/pages/auth/auth'
                                    })
                                }
                            }
                        });
                    }
                })
            }
        })
    });
};
로그인 후 복사

auth.js

인증 페이지 js

Page({
    data: {
    },
    onLoad: function () {
        self = this;
    },

    auth: function (e) {
        console.log(app.globalData.userInfo);
        if (e.detail.userInfo) {
            login().then( (res)=>{
                console.log(res);// 打印结果
                if (res.code) {
                    // 接口错误
                    return
                }
                // 跳转回上一个页面
                wx.navigateBack()
            }).catch( (errMsg)=>{
                console.log(errMsg);// 错误提示信息
            });
        }
    },

});
로그인 후 복사

프로젝트 주소

https://github의 사용자 정보 .com/ lmxdawn/wx...

vue + thinkphp5.1로 구축된 백엔드 관리: https://github.com/ lmxdawn/vu...

Demo:<br>미니 프로그램의 요청 캡슐화에 대해(상세 프로세스 포함)

<br>
로그인 후 복사

위 내용은 미니 프로그램의 요청 캡슐화에 대해(상세 프로세스 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 요청은 무엇을 의미합니까? PHP 요청은 무엇을 의미합니까? Jul 07, 2021 pm 01:49 PM

요청의 중국어 의미는 "요청"입니다. PHP의 전역 변수이며 "$_POST", "$_GET" 및 "$_COOKIE"를 포함하는 배열입니다. "$_REQUEST" 변수는 POST 또는 GET으로 제출된 데이터 및 COOKIE 정보를 얻을 수 있습니다.

Python 3.x에서 urllib.request.urlopen() 함수를 사용하여 GET 요청을 보내는 방법 Python 3.x에서 urllib.request.urlopen() 함수를 사용하여 GET 요청을 보내는 방법 Jul 30, 2023 am 11:28 AM

Python3.x에서 urllib.request.urlopen() 함수를 사용하여 GET 요청을 보내는 방법 네트워크 프로그래밍에서는 HTTP 요청을 보내 원격 서버에서 데이터를 가져와야 하는 경우가 많습니다. Python에서는 urllib 모듈의 urllib.request.urlopen() 함수를 사용하여 HTTP 요청을 보내고 서버에서 반환된 응답을 얻을 수 있습니다. 이 기사에서는 사용 방법을 소개합니다.

Vue3 Axios 인터셉터를 요청 파일에 캡슐화하는 방법 Vue3 Axios 인터셉터를 요청 파일에 캡슐화하는 방법 May 19, 2023 am 11:49 AM

1. request.js라는 새 파일을 생성하고 Axios 가져오기: importaxiosfrom'axios' 2. request라는 함수를 생성하고 내보내기: request라는 함수를 생성하고 이를 내보냅니다. 기본 URL을 사용하여 새 Axios 인스턴스를 설정합니다. . 래핑된 Axios 인스턴스에 시간 초과 설정을 추가하려면 Axios 인스턴스를 생성할 때 시간 초과 옵션을 전달할 수 있습니다. 내보내기constrequest=axios.create({baseURL:'https://example.

PHP의 요청 객체란 무엇입니까? PHP의 요청 객체란 무엇입니까? Feb 27, 2024 pm 09:06 PM

PHP의 요청 객체는 클라이언트가 서버로 보낸 HTTP 요청을 처리하는 데 사용되는 객체입니다. Request 객체를 통해 요청 메소드, 요청 헤더 정보, 요청 매개변수 등과 같은 클라이언트의 요청 정보를 얻어 요청을 처리하고 응답할 수 있습니다. PHP에서는 $_REQUEST, $_GET, $_POST 등과 같은 전역 변수를 사용하여 요청된 정보를 얻을 수 있지만 이러한 변수는 객체가 아니라 배열입니다. 요청사항을 보다 유연하고 편리하게 처리하기 위해

PHP에서 요청이란 무엇입니까? PHP에서 요청이란 무엇입니까? Jun 01, 2023 am 10:12 AM

PHP의 요청은 요청을 의미하며, HTML 양식과 URL의 매개변수로 제출된 데이터를 수집하는 데 사용됩니다. $_request는 동시에 데이터를 얻을 수 있습니다. 연관 배열. 여기서 키는 양식 필드의 이름이고 값은 양식 필드의 값입니다. $_request 변수를 사용할 때 보안 문제를 방지하려면 사용자가 입력한 데이터를 항상 검증하고 필터링해야 합니다.

PHP에서 요청의 역할과 중요성 PHP에서 요청의 역할과 중요성 Feb 27, 2024 pm 12:54 PM

PHP에서 요청의 역할과 중요성 PHP 프로그래밍에서 요청은 웹 서버에 요청을 보내는 메커니즘으로 웹 개발에서 중요한 역할을 합니다. 요청은 주로 양식 제출, GET 또는 POST 요청 등과 같이 클라이언트가 보낸 데이터를 얻는 데 사용됩니다. 요청을 통해 사용자가 입력한 데이터를 얻을 수 있으며 데이터를 처리하고 응답할 수 있습니다. 이 기사에서는 PHP에서 요청의 역할과 중요성을 소개하고 구체적인 코드 예제를 제공합니다.

Go에서 컨텍스트를 사용하여 요청 매개변수 확인을 구현하는 방법 Go에서 컨텍스트를 사용하여 요청 매개변수 확인을 구현하는 방법 Jul 22, 2023 am 08:23 AM

Go에서 컨텍스트를 사용하여 요청 매개변수 확인을 구현하는 방법 소개: 백엔드 개발 프로세스 중에 매개변수의 합법성을 보장하기 위해 요청 매개변수를 확인해야 하는 경우가 많습니다. Go 언어는 요청 컨텍스트 정보를 처리하기 위한 컨텍스트 패키지를 제공하며, 우아한 디자인과 간단한 사용법으로 인해 일반적으로 사용되는 도구입니다. 이 기사에서는 Go의 컨텍스트 패키지를 사용하여 요청 매개변수 확인을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 컨텍스트 패키지 소개 Go에서 컨텍스트 패키지는 다음을 전달하는 데 사용됩니다.

urllib.request 모듈을 사용하여 Python 3.x에서 HTTP 요청을 보내는 방법 urllib.request 모듈을 사용하여 Python 3.x에서 HTTP 요청을 보내는 방법 Jul 30, 2023 am 11:21 AM

Python3.x에서 urllib.request 모듈을 사용하여 HTTP 요청을 보내는 방법 실제 개발 프로세스에서는 서버와 상호 작용하기 위해 HTTP 요청을 보내는 경우가 많습니다. Python은 URL 요청을 처리하기 위한 Python 표준 라이브러리의 모듈 중 하나인 urllib.request 모듈을 제공합니다. 이 기사에서는 urllib.request 모듈을 사용하여 HTTP 요청을 보내는 방법을 배웁니다.

See all articles