前端学习日记(1)微信小程序获取openid问题
首先在wx.login()获取登录jscode,然后把appid、secret、jscode放入下面接口对应位置
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
小程序代码实际格式应该是:
url:`https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${SECRET}&js_code=${JSCODE}&grant_type=authorization_code`
(注意使用的是反引号``,大写变量名则是前面就定义好的)
访问接口后返回数据中就包含openid和session_key等信息。
然而,在微信小程序调试时允许这么访问,如果小程序要发布上线,必须把上述访问过程放到后台执行。我在网上搜到的springboot后台接口代码:
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.kevinsawicki.http.HttpRequest;
@Service
public class wx_jscode2openidServiceImpl implements wx_jscode2openidService{
@Override
public String jscode2openid(String code) {
Map<String, String> data = new HashMap<String, String>();
data.put("appid", "你的appid");
data.put("secret", "你的secret");
data.put("js_code", code);
data.put("grant_type", "authorization_code");
String response = HttpRequest.get("https://api.weixin.qq.com/sns/jscode2session").form(data).body();
System.out.println("Response was: " + response);
JSONObject obj= JSON.parseObject(response);//将json字符串转换为json对
//System.out.println(obj);
return obj.toString();
}
}
其中的code即为jscode,由微信小程序端发送到后台。
在springboot的pom文件中需要导入依赖:
<!--http requset-->
<dependency>
<groupId>com.github.kevinsawicki</groupId>
<artifactId>http-request</artifactId>
<version>6.0</version>
</dependency>
<!--json 解析-->
<!--https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
小程序发布后会提醒“session_key存在明文传输”的问题,但暂时没发现影响。