微信小程序登录Java后台接口

微信小程序登录java后台接口

首先看一下微信小程序的开发文档:
微信小程序开发文档

步骤:

  1. 小程序端向微信接口服务发送请求——wx.login();获取到登录临时凭证code
  2. 小程序端拿着获取到的code向后台(这里是java服务端),使用wx.request()向自己的服务器发送请求(接口服务器自己定义)
  3. 后台服务器拿着小程序端传过来的code,以及自己的APPID,secretKey向微信方发送HttpGet请求
  4. 后台服务器获取到微信方返回回来的openId,session_key,然后加上自己本地的登录状态(本地自己定义),发送给小程序端
  5. 小程序端接收到后台传输过来的登录状态,保存到storage中以供以后使用。

具体实现步骤

小程序端

随便弄一个按钮,绑定下面的方法
在这里插入图片描述

 //与后端通信
    bindtest: function (){
      wx.login({
        success:res=>{
          let _code=res.code;
          //获取到code之后再发送给后端
          wx.request({
            url: 'http://localhost:8080/login',
            data:{
              code:_code,
            },
            method:'POST',
            header: {
              'content-type': 'application/x-www-form-urlencoded' // 默认是json
            },
            success: function (res) {
              console.log(res.data);
            },
            fail: function (res) {
              console.log(".....fail.....");
            }
          })
        }
      })
  }

java服务器端

package com.kylin.wxtest.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.kylin.wxtest.bean.Login;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

@RestController
public class UserController {
    private static final long  serialVersionUID=1L;

    private static final String APPID = "wxb88xxxxxxxx46140e";
    private static final String SECRET = "19fa40c6xxxxxxxx6ae971267";
    private String code;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }


    @RequestMapping(value = "/login")
    public String login(String code){
        System.out.println(code);
        System.out.println("------------------------------------");
        //微信那边的接口,grant_type=authorization_code是固定的
        String url="https://api.weixin.qq.com/sns/jscode2session?appid="+APPID+
                "&secret="+SECRET+"&js_code="+ code +"&grant_type=authorization_code"; 
        //发送请求给微信后端
        CloseableHttpClient httpClient= HttpClients.createDefault();
        HttpGet httpGet=new HttpGet(url);
        InputStream inputStream=null;
        CloseableHttpResponse httpResponse=null;
        StringBuilder result=new StringBuilder();
        try {
            httpResponse=httpClient.execute(httpGet);
            HttpEntity entity=httpResponse.getEntity();
            inputStream=entity.getContent();
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
            String line="";
            while ((line=bufferedReader.readLine())!=null){
                System.out.println(line); //这里需要使用fastjson来提取一下内容
                JSONObject jsonObject= JSON.parseObject(line);
                Login login=new Login();
                login.setOpenid(jsonObject.getString("openid"));
                login.setSession_key(jsonObject.getString("session_key"));
                result.append(login.getOpenid()+"hello_world"+login.getSession_key());
                System.out.println(result.toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return result.toString();
    }
}

总结

这样小程序端就可以获取到openId以及session_key;相当于授权成功!

  • 13
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: 微信小程序登录可以使用微信的授权登录功能来实现。首先,在小程序端调用微信的授权登录接口,获取用户的授权信息。然后,将用户的授权信息发送到你的服务器端进行校验和处理。在服务器端,你可以使用微信的登录凭证校验接口来校验用户的授权信息是否有效。如果有效,则可以在服务器端为用户生成一个自定义的登录态,并将其返回给小程序端。小程序端收到登录态之后,可以将其存储到本地,并在之后的每次请求中都带上该登录态,以此来保持用户的登录状态。 这里是一个简单的示例流程: 1. 在小程序端调用微信的授权登录接口,获取用户的授权信息。 2. 将用户的授权信息发送到你的服务器端进行校验和处理。 3. 在服务器端调用微信的登录凭证校验接口,校验用户的授权信息是否有效。 4. 如果有效,则在服务器端为用户生成一个自定义的登录态,并将其返回给小程序端。 5. 小程序 ### 回答2: 要使用Java进行微信小程序登录,可以借助微信开放平台提供的开发工具包(SDK)来实现。以下是一些实现步骤: 1. 首先,通过微信开放平台获取到小程序的AppID和AppSecret。在微信开放平台注册并创建小程序后,可以在开放平台的管理后台中找到这些信息。 2. 在Java项目中,引入微信开放平台提供Java SDK。可以在相关的Maven库中找到这个SDK,通过添加依赖项进行引入。SDK提供了一些实现微信相关功能的类和方法。 3. 创建一个Java类来处理微信小程序登录功能。在这个类中,需要实现以下步骤: - 根据AppID和AppSecret获取到AccessToken。通过调用SDK提供的方法,传入AppID和AppSecret参数,可以得到一个AccessToken,后续的登录验证需要用到这个Token。 - 根据微信小程序传入的code,获取到OpenID和SessionKey。当用户在小程序中进行登录操作后,小程序会将用户的code发送到服务器端。通过调用SDK提供的方法,传入code和AccessToken参数,可以得到用户的OpenID和SessionKey。 - 进一步处理用户登录逻辑。可以将OpenID和SessionKey存储到数据库中,作为用户登录的凭证。也可以使用这些凭证进行后续的业务逻辑处理。 4. 在微信小程序端,通过微信提供登录API获取到用户的code,并将code传给服务器端。可以使用小程序原生的登录按钮,或者自定义按钮来触发登录操作。将code通过HTTP请求发送给Java服务器。 5. 服务器端接收到小程序的code后,调用之前创建的Java类中的方法进行处理。获取到用户的OpenID和SessionKey,并进行后续的业务逻辑操作。 以上是一个简单的使用Java进行微信小程序登录的实现步骤。具体的代码编写和功能完善需要根据实际需求进行调整。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值