Uniapp WeChat applet connexion autorisée avant et arrière ensemble complet

Préface

Le petit programme écrit en Uniapp est sur le point d'être mis en ligne, mais il s'est avéré que WeChat n'a pas pu être revu. Je trouve aussi cela très étrange! Les informations de licenciement sont les suivantes.
Insérez la description de l'image ici
Ceci est vrai, car le code écrit avant doit être en mode débogage lors de l'obtention de l'utilisateur openid. Je pensais que c'était un problème de ne pas être en ligne! Cette fois, c’est bien, mais l’internet n’est pas autorisé, il n’ya pas d’histoire derrière.

Avant que

uni.login({
    
    
					provider: 'weixin',
					success: function(res) {
    
    
						console.log(res)
						let appid = ''
						let secret = ''
						let url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' +
							res.code + '&grant_type=authorization_code';
						uni.request({
    
    
							url: url, // 请求路径
							success: result => {
    
    
								console.info("result.data==>", result.data);
								let openId = result.data.openid;
								console.info("openId==>", openId);
							},
						});
					}
				});

La méthode d'écriture précédente n'était pas autorisée par notre propre serveur, et le front-end était fait directement, et l'openid de l'utilisateur pouvait en effet être obtenu, puis le problème ci-dessus s'est produit!

Autorisation du serveur

Serveur

	@GetMapping("/wxOAuth")
    public JSONObject list(String code) {
    
    
        String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
        Map<String,String> requestUrlParam = new HashMap<String,String>();
        requestUrlParam.put("appid","");	//开发者设置中的appId
        requestUrlParam.put("secret", "");	//开发者设置中的appSecret
        requestUrlParam.put("js_code", code);	//小程序调用wx.login返回的code
        requestUrlParam.put("grant_type", "authorization_code");//默认参数
        JSONObject jsonObject = JSON.parseObject(UrlUtil.sendPost(requestUrl, requestUrlParam));
        return  jsonObject;
    }
//请求工具类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.Map;

public class UrlUtil {
    
    
    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url 发送请求的 URL
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, Map<String, ?> paramMap) {
    
    
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";

        String param = "";
        Iterator<String> it = paramMap.keySet().iterator();

        while(it.hasNext()) {
    
    
            String key = it.next();
            param += key + "=" + paramMap.get(key) + "&";
        }

        try {
    
    
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
    
    
                result += line;
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
    
    
            try{
    
    
                if(out!=null){
    
    
                    out.close();
                }
                if(in!=null){
    
    
                    in.close();
                }
            }
            catch(IOException ex){
    
    
                ex.printStackTrace();
            }
        }
        return result;
    }
}

l'extrémité avant

			wxGetUserInfo() {
    
    
				uni.login({
    
    
					provider: 'weixin',
					success: loginRes => {
    
    
						console.log(loginRes.code)
						getWxOauth(
							loginRes.code
						).then(res => {
    
    
							console.log(res)
							let openId = res.data.openid;
							console.info("openId==>", openId);
						}).catch(res => {
    
    
						
						})
					}
				});
			},

Faites-le!

Je suppose que tu aimes

Origine blog.csdn.net/CSDN877425287/article/details/113657331
conseillé
Classement