更新记录
2.1.4(2024-07-26) 下载此版本
获取用户信息
2.1.3(2024-06-25) 下载此版本
修改函数名
2.1.2(2024-06-25) 下载此版本
默认使用固定的token
查看更多平台兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | × | × |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
one-wechat
简介:微信SDK,可以直接调用微信服务号的功能,包括微信网页登录等。
支持阿里云(腾讯云需要购买稳定IP,暂没有兼容处理)
配置IP白名单
到微信服务号后台添加IP白名单,添加IP列表如下:
47.92.132.2
47.92.152.34
47.92.87.58
47.92.207.183
8.142.185.204
参考:[代理服务器IP列表](https://doc.dcloud.net.cn/uniCloud/cf-functions.html#eip)
填写配置信息
打开common/one-wechat/config.js文件,填写appid跟secret
打开database,上传one-wechat-cache.schema.json
获取JS-SDK配置信息
公众号设置-功能设置-设置JS接口安全域名
前端示例
需安装jweixin-module:
npm install jweixin-module --save
//https://ask.dcloud.net.cn/article/
var jWeixin = require('jweixin-module')
var surl = encodeURIComponent(window.location.href.split('#')[0]); //解决URL中带参数的问题
uniCloud.callFunction({
name:'one-wechat-function',
data:{
type:'getJssdkConfig',
url:surl
},
success(res) {
if(res.result.state == 400){
alert(res.result.msg)
}
let config = res.result.data.jssdkConfig
config.debug = true //默认为false
config.jsApiList = ["updateAppMessageShareData"]
jWeixin.config(config);
jWeixin.ready(function() {
jWeixin.updateAppMessageShareData({
title: '标题', // 分享标题
desc: "描述内容", // 分享描述
link: window.location.href, // 分享链接
imgUrl: '分享图标', // 分享图标
success: function() {
// 用户确认分享后执行的回调函数
}
})
})
}
})
云函数使用示例
你也可以使用自己的云函数进行调用(需要在自己的云函数,将公共模块one-wechat添加进去)
'use strict';
const one_wechat = require('one-wechat')
exports.main = async (event, context) => {
let config_res = await one_wechat.getJssdkConfig(event.url)
return config_res
}
网页授权
公众号设置-功能设置-设置网页授权安全域名
前端示例
export default {
data() {
},
methods: {
//点击登陆
login: function() {
uniCloud.callFunction({
name: 'one-wechat-function',
data: {
type: 'getAuthorizeUrl',
url: encodeURIComponent(window.location.href) //回调地址
},
success(res) {
uni.setStorageSync('try_get_user', true)
window.location.href = res.result
}
})
}
},
onLoad() {
const try_get_user = uni.getStorageSync('try_get_user')
if (try_get_user && try_get_user == true) {
uniCloud.callFunction({
name: 'one-wechat-fuction',
data: {
type: 'getUserByUrl',
url: window.location.href
}
}).then((res) => {
uni.setStorageSync('try_get_user', false) //防止页面刷新后继续调用函数
if (res.result.state == 200) {
uni.setStorageSync('user_info', res.result.data.user_info)
} else {
alert(res.result.msg)
}
})
}
}
}
服务器配置
校验网址
const one_wechat = require('one-wechat')
exports.main = async (event, context) => {
let server = one_wechat.server;
return server.checkURL(event)
};
上传云函数,绑定域名,网址填到公众号的 基本配置-服务器配置,提交校验即可
基础消息能力
接收消息跟被动回复消息方式一
const one_wechat = require('one-wechat')
exports.main = async (event, context) => {
let server = one_wechat.server;
let message = server.getMessage(event)
//let re_message = server.toMessage('ddd') //回复文本信息
let re_message = server.toMessage({
MsgType: 'image',
Image: {
MediaId:'MediaId'
}
}) //回复图片消息
return re_message;
};
接收消息跟被动回复消息方式二(回调)
const one_wechat = require('one-wechat')
exports.main = async (event, context) => {
let server = one_wechat.server;
await server.push(event, function(message){
// return '回复文本信息的话,直接返回string即可' //默认回复文本信息
//回复图片消息
return {
MsgType: 'image',
Image: {
MediaId:'MediaId'
}
}
})
return server.response();
};
服务号功能
插件默认使用access_token,如需使用stable_access_token,第二个参数填入true即可
创建二维码
//云函数使用示例
const one_wechat = require('one-wechat')
let qrcode_res = await one_wechat.qrcode.create({
action_name: "QR_LIMIT_STR_SCENE",
action_info: {
scene: {
scene_str: '文本信息'
}
}
}
//前端使用示例
uniCloud.callFunction({
name: 'one-wechat-function',
data: {
type: 'createQrcode',
data: {
"expire_seconds": ,
"action_name": "QR_STR_SCENE",
"action_info": {
"scene": {
"scene_str": "文本信息"
}
}
}
}
})
//************//
//正确返回数据
{state:200,data:{img_url:'二维码url完整地址'}}
//错误返回数据
{state:400,msg:'错误信息'}
客服发送消息
const one_wechat = require('one-wechat')
await one_wechat.custom.sendMessage({
touser: message.FromUserName,
msgtype: 'text',
text: {
content: '文本信息'
}
})
创建服务号菜单
const one_wechat = require('one-wechat')
let res = await one_wechat.menu.create({
"button": [{
"type": "view",
"name": "淘宝",
"url": "https://taobao.com"
}
]
})
获取用户信息
const one_wechat = require('one-wechat')
let res = await one_wechat.user.info('用户的openid')
//正确返回数据
{"state":200,"data":{"subscribe":1,"openid":"openid","sex":0,"language":"zh_CN","subscribe_time":,"unionid":"unionid","remark":"","groupid":0,"tagid_list":[],"subscribe_scene":"ADD_SCENE_OTHERS","qr_scene":0,"qr_scene_str":""}}
//错误返回数据
{state:400,msg:'错误信息'}