java 实现企业微信上传图片 企业微信上传照片 您所在的位置:网站首页 企业微信怎样上传照片 java 实现企业微信上传图片 企业微信上传照片

java 实现企业微信上传图片 企业微信上传照片

2024-07-08 17:51| 来源: 网络整理| 查看: 265

总路线 调用jssdk,先传到微信,再下载到自己的服务器 一、微信 code获取userId(java),作用:获取用户信息 二、前台拍照调用,选择图片,命名图片,上传图片 三、(java) 从微信服务器下载图片到自己的服务器

一、微信 code获取userId(java)

第一点:本人第一次进行OAuth2.0验证的时候用的是ajax,一个错误的用法 引用一下”流浪的狼“这位大大对我说过的话

code换userid不能ajax. 这是权限验证,举个例子说明一下。你是用户要进入一座青楼,但你没有钥匙怎么办? 腾讯面子大,只要它说你是王公子本来就是熟客,青楼看门的立马放你进去;但你得要腾讯认识你才行啊,这就需要你去腾讯大爷的房间验证一下,你拿条你穿过的裤子给腾大爷(AJAX)是不行的,必须你亲自去腾大爷的房间(跳转),让腾大爷感觉满意,并且确认你就是你。它才开个后门把你塞入青楼。 这样你就完成了不用钥匙开门就进楼的整个过程

感谢他的讲解我才明白权限验证不能用ajax,要用跳转

第二点:微信企业号OAuth2.0的原开发文档:

第三点:代码环节 原理:a、点击前台url请求微信服务器 b、微信服务器生成code发送到redirect_uri(后台接口),后台接口进行code换取useId,并返回userId

备注:access_token的获取请看 a、点击url换取code

/** * 用code换取userId * * @param code * @return */ public static String getUserId(String code) { String access_token = getToken();//access_token建议从数据库中获取,或者全局缓存中获取,这只是个本地的例子, JSONObject obj = doGet( "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" + access_token + "&code=" + code); return obj.get("UserId").toString(); } /** * http GET请求封装 * * @param url * @return */ public static JSONObject doGet(String url) { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet get = new HttpGet(url); JSONObject obj = new JSONObject(); try { HttpResponse response = httpClient.execute(get); HttpEntity entity = response.getEntity(); if (entity != null) { String result = EntityUtils.toString(entity, "utf-8"); obj = JSONObject.parseObject(result); } } catch (Exception e) { e.printStackTrace(); } return obj; }

二、前台拍照调用,选择图片,命名图片,上传图片

原理解释: 微信企业号开发文档:

1、获取wx.config配置

2、调用拍照获取照片的微信接口(使用微信自带接口)

3、预览获取的图片,设置图片别名(使用微信自带接口)

4、上传图片到微信服务器(使用微信自带接口)

5、从微信服务器下载图片到自己的服务器

js中的代码,注意必须先引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.1.0.js 和jq文件 备注:js-sdk验签,请看

var flag = false; // ID数组 var localIds = null; // 上传序号 var idx = 0; var imgNames = ''; var serverIds = ''; $(document).ready(function() { signature(); }); wx.ready(function() { mychooseImg(); }); function signature() { $.ajax({ url: '你自己验签的地址', data: { 'url': window.location.href}, type: "get", dataType: 'json', success: function(data) { wx.config({ appId: '你的corpId', // 必填,公众号的唯一标识 timestamp: data.timestamp, // 必填,生成签名的时间戳 nonceStr: data.noncestr, // 必填,生成签名的随机串 signature: data.signature, //必填,签名 jsApiList: ['chooseImage','uploadImage'] // 必填,需要使用的JS接口列表 }); flag = true; }, error: function(data) { alert('fail'); } }); } //调用拍照获取照片的微信接口 function mychooseImg() { wx.chooseImage({ success: function(res) { localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 showImg(localIds); } }); } //预览获取的图片,设置图片别名(使用微信自带接口) function showImg(localIds) { var _html = ""; for(var i in localIds) { var photoSrc = localIds[i]; _html = _html + '

'; }   $("#photo").append(_html); $(".btn").append('上传图片'); } //上传图片到微信服务器(使用微信自带接口),从微信服务器下载图片到自己的服务器 function getUpload() { wx.uploadImage({ //获取图片媒体ID localId: localIds[idx].toString(), // 需要上传的图片的本地ID isShowProgressTips: 1, // 默认为1,显示进度提示 success: function(res) { //获取成功 // 上传序号,上传一张 累计 +1 idx++; //存储图片媒体ID,用,号分割 serverIds += res.serverId + ';'; if(idx < localIds.length) { //本地图片ID 还没全部获取完图片媒体ID //调用上传递归函数 getUpload(); } else { //上传序号归零 idx = 0; //获取命名的图像名称 var form_input=$(".form_input"); for (i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有