微信小程序登陆(全流程-前后端)

这篇具有很好参考价值的文章主要介绍了微信小程序登陆(全流程-前后端)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境要求

1.注册一个小程序

2.微信开发者工具

3.idea(springboot)

目录

项目准备

用户登陆

前端开发,传递code

index.wxss

index.js

后端编写,调用微信接口,获取openId

现在用户的所有信息都拿不到,只能用户自己填写


其实微信前端是可以直接请求获取openId的,但是会暴露你的key和secret

流程:前端获取code->后端调用微信接口->返回openid给前端


项目准备

1.打开微信开发工具,点击添加

微信小程序登陆(全流程-前后端)

2.创建小程序

  • 修改项目名称
  • 更换目录
  • 选择从网页创建好的小程序AppId
  • 选择不使用云服务
  • 模板选择基础
  • 使用javaScript的基础模板

用户登陆

前端开发,传递code

首先画一个登陆按钮

微信小程序登陆(全流程-前后端)

index.wxml 

<view class="test_view">

<view class="title">前后端请求-响应测试</view>

<view><button bindtap="clickLogin">登陆</button></view>

</view>

index.wxss

.test_view .title{

  font-weight: bold;

  font-size: 18px;

  color: #5F687E;

  text-align: center;

  margin-bottom: 10px;

}

.test_view button{

  background-color: palegoldenrod;

}

index.js

// index.js
// 获取应用实例
const app = getApp()

Page({
  // data: {
  //  user_name:"小王"
  // },
  clickLogin:function(){
    wx.login({
      success (res) {
        console.log("js_code",res.code)
        if (res.code) {
          //发起网络请求
          wx.request({
            url: 'http://localhost:8087/user/getWxInfoTest',
            method: 'post',
            data: {
              code: res.code
            }
          })
        } else {
          console.log('登录失败!' + res.errMsg)
        }
      }
    })
  }
})

后端编写,调用微信接口,获取openId

获取openId需要3个参数,appid,code,secret。

登录 微信公众平台 =>开发管理=>开发设置=>开发者Id

appId

微信小程序登陆(全流程-前后端)

AppSecret

微信小程序登陆(全流程-前后端)

其中的HttpUtils参考我的这篇

httpUtils(怕大家还要去我的博客里找,这里给懒的同学~准备了一份直接复制就可以用的)

package com.example.tx_mini_pro.tools;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpUtils {
    public static String getRequest(String httpurl) {

        HttpURLConnection connection = null;
        InputStream is = null;
        BufferedReader br = null;
        String result = null;// 返回结果字符串
        try {
            // 创建远程url连接对象
            URL url = new URL(httpurl);
                    // 通过远程url连接对象打开一个连接,强转成httpURLConnection类
                    connection = (HttpURLConnection) url.openConnection();
            // 设置连接方式:get
            connection.setRequestMethod("GET");
            // 设置连接主机服务器的超时时间:15000毫秒
            connection.setConnectTimeout(15000);
            // 设置读取远程返回的数据时间:60000毫秒
            connection.setReadTimeout(60000);
            // 发送请求
            connection.connect();
            // 通过connection连接,获取输入流
            if (connection.getResponseCode() == 200) {
                is = connection.getInputStream();
                // 封装输入流is,并指定字符集
                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                // 存放数据
                StringBuffer sbf = new StringBuffer();
                String temp = null;
                while ((temp = br.readLine()) != null) {
                    sbf.append(temp);
                    sbf.append("\r\n");
                }
                result = sbf.toString();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (null != br) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != is) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            connection.disconnect();// 关闭远程连接
        }

        return result;
    }
}

springBoot请求接口,请求外部接口_springboot请求外部接口_我要用代码向我喜欢的女孩表白的博客-CSDN博客

public  static String getOpenid(String code,String appid,String secret) {
// 调用接口必要的参数
        StringBuilder data=new StringBuilder();
// appid、secret定义在配置文件中,注入到项目里
        data.append("appid="+appid+"&");
        data.append("secret="+ secret+"&");
        data.append("js_code="+ code+"&");
        data.append("grant_type="+ "authorization_code");

        String response = HttpUtils.getRequest("https://api.weixin.qq.com/sns/jscode2session?" + data);


        return response;
    }

本地调试需要在微信小程序中,【详情】,然后【选择不校验合法】

微信小程序登陆(全流程-前后端)

Controller层

package com.example.tx_mini_pro.controller;

import com.alibaba.fastjson.JSONObject;

import com.example.tx_mini_pro.tools.AppConfigTools;
import com.example.tx_mini_pro.tools.WechatTools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
//    @Autowired
//    UserService userService;

    @Autowired
    WechatTools wechatTools;
    /**
     * 微信小程序的登陆,如果有账号,则返回登陆成功,如果没有则返回(首次用户,需要认证)
     * @return
     */
//    @PostMapping("/login")
//    public RsJsonBean LoginUser(@RequestBody JSONObject obj){
//
//        userService.LoginUser(obj.getString("code"));
//
//    return null;
//}
    @PostMapping("/getWxInfoTest")
    public String getWxInfoTest(@RequestBody JSONObject obj) {
        String AppId = AppConfigTools.getWxAppId();
        String AppSecret = AppConfigTools.getWxAppSecret();

        JSONObject wxJson = JSONObject.parseObject(WechatTools.getOpenid(obj.getString("code"), AppId, AppSecret));
        log.info("微信的返回值{}", wxJson);
        return wxJson.toJSONString();
    }
}

拿到openId之后,其实就已经登陆了,如果用户是首次的话,那应该注册,获取用户的基本信息

现在获取用户昵称和头像,其他的很多东西,现在比较注重隐私,数据都拿不到的。

现在用户的所有信息都拿不到,只能用户自己填写

微信小程序登陆(全流程-前后端)

 

 微信小程序登陆(全流程-前后端)

 

关于授权,如果用户拒绝授权,就得删除小程序,在重新进来

微信小程序登陆(全流程-前后端)

 

wx.getUserInfo,然后我得到了一个,昵称叫微信用户的东西,头像是这个

微信小程序登陆(全流程-前后端)

 

前端授权代码

wxml

<view><button bindtap="getScope">授权头像和昵称</button></view>

js

 getScope:function(){
    wx.getSetting({
      success(res) {
        if (!res.authSetting['scope.record']) {
          wx.authorize({
            scope: 'scope.userInfo',
            success () {
              // 用户已经同意小程序使用昵称和头像功能
              console.log(wx.getUserInfo())
            }
          })
        }
      }
    })
  }

结果.我真的对小程序很无语

微信小程序登陆(全流程-前后端)

 

参考:

微信小程序登录方法,授权登陆及获取微信用户手机号_微信小程序登陆_痴心阿文的博客-CSDN博客

java 后端获取微信小程序openid-CSDN博客

微信小程序获取用户openid的方法详解_javascript技巧_脚本之家文章来源地址https://www.toymoban.com/news/detail-406854.html

到了这里,关于微信小程序登陆(全流程-前后端)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信公众号程序或微信小程序接入微信支付流程(前后端程序示例)

      微信公众号程序或微信小程序项目中基本都要有微信支付。支付场景基本就是点击支付,然后手机底部拉起输入微信支付密码弹窗,密码输入正确后,支付完成。但是无论是微信小程序或微信公众号程序都是在后端调用微信api接口进行统一下单,将接口返回数据回传前端

    2024年02月09日
    浏览(66)
  • 前端uniapp+后端springboot 详细教程《实现微信小程序授权登录》(附完整前后端项目demo)

    微信小程序官方登录流程图: 参考微信小程序登录官网文档 1、前端技术栈 1.1、uniapp 使用uniapp构建一套代码多端使用的前端框架项目 1.2、前端封装工具 dateUtil.js: 功能: 1. 时间日期格式化 2. 传入日期是否和当前日期的比较 完整代码: requestUtil.js: 功能: 1. 定义公共的

    2024年02月14日
    浏览(59)
  • 微信小程序第五节——登录那些事儿(超详细的前后端完整流程)

    📌 微信小程序第一节 ——自定义顶部、底部导航栏以及获取胶囊体位置信息。 📌 微信小程序第二节 —— 自定义组件 📌 微信小程序第三节 —— 页面跳转的那些事儿 📌 微信小程序第四节—— 网络请求那些事儿 😜 作           者 :是江迪呀 ✒️ 本文 : 微

    2024年02月09日
    浏览(43)
  • Gpt微信小程序搭建的前后端流程 - 前端小程序部分-1.基础页面框架的静态设计(二)

    Gpt微信小程序搭建的前后端流程 - 前端小程序部分-1.基础页面框架的静态设计(二) 在开始这个专栏,我们需要找一个小程序为参考,参考和仿照其界面,聊天交互模式。 这里参考小程序- 小柠AI智能聊天 ,可自行先体验。 该小程序主要提供了以下几点 功能向需求 : 每天免费

    2024年02月14日
    浏览(43)
  • 小程序微信登陆实现流程

    1. 微信登录流程 微信登录官方介绍:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登录:小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。 登录流程时序 步骤分析: 小程序端,调用wx.log

    2024年02月17日
    浏览(36)
  • 微信小程序之微信登陆-——-微信小程序教程系列

    }) 黄色标注的部分就是登陆部分 下面详细介绍微信小程序的微信登陆 第一步:获取登陆态code 微信登陆部分,首先需要使用微信小程序的api—— wx.login(OBJECT)来获取登录态 这个登陆态的作用是为了获取用户的openid(用户的唯一标识) 相关链接:https://mp.weixin.qq.com/debug/wxadoc

    2024年04月23日
    浏览(55)
  • 微信小程序的登陆界面怎么写(手机号登陆)

    微信小程序的登录界面可以通过使用 view 、 input 、 button 等组件来实现。以下是一个简单的登录界面示例代码: 其中, .login-container 是登录页面的容器, .login-title 是登录标题, .form-item 是表单项容器, input 是输入框, .login-btn 是登录按钮。

    2024年02月16日
    浏览(53)
  • 微信小程序实现图形验证码登陆+手机验证码登陆

    前端界面如下:

    2024年01月16日
    浏览(34)
  • 微信小程序基础入门---登陆实现

    在用户填写完信息之后,点击登录按钮,调用登录接口,根据后台返回内容判断是否登录成功。        在这里,当我们输入正确的账号和密码之后,后台提示我们登录成功,但是当我们在登录成功之后在调用,获取用户信息的方法的时候,发现提示还是当前用户未登录。

    2023年04月14日
    浏览(31)
  • Java微信小程序的授权登陆

    【前提】: 获取服务号的公众号平台,中的【开发配置】进去, 获取小程序的 AppId 与 AppSevrect 【登陆授权作用域分为两种】 一 、静默登陆 scope 参数值为 snsapi_base ;只能获取到用户 openid 。好处是静默认证,无需用户手动点击认证按钮,感觉上像是直接进入网站一样。 二、

    2024年02月01日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包