基础准备
• 微信开发会有一个跨域的问题,按照如下路径设置一个 js 安全域名
设置--> 公众号设置 --> 功能设置
如图:
MP_verify_xgOsd3v07w4vWlN4.txt 文件一定要放在域名的根目录下面
微信开发最重要的两个参数openid
access_token
, 很多接口必须有这两个参数才能调通.
• 基本配置
在 开发 --> 基本配置-->服务器配置 填写相关信息,使用js-sdk必须配置,微信用作消息校验,否则,微信的基本功能使用不了.ip白名单是获取基础token的服务器的ip,否则ip无效
微信网页授权
按照如下路径找到微信网页授权的文档:
开发 --> 开发者工具 --> 开发者文档 -->微信网页开发 --> 微信网页授权
文档说明也是非常详细的,主要三步:
• 用户同意授权,获取返回的 code
var redirect_uri = "http://xxxx.com";
var encodeUrl = encodeURI(redirect_uri);
var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxx&redirect_uri="+encodeUrl+"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
window.location.href = url;
参数说明:
a. appid
公众号的唯一标识
b. redirect_uri
网页授权回调的链接,即,用户点击同意授权后的跳转页面,需要使用encodeURI 对链接处理
c. response_type
返回类型,填写 code
即可
d. scope
的参数可以是 snsapi_base
和 snsapi_userinfo
snsapi_base
: 以snsapi_base
为scope发起的网页授权,是用来获取进入页面的用户的openid
的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面).
snsapi_userinfo
: 以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
很多接口都是通过 openid
才能调用成功的。
e. state
重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节,可以不传
f. wechat_redirect
无论直接打开还是做页面302重定向时候,必须带此参数
• 通过code换取网页授权access_token
获取code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token? appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数说明:
a. appid
公众号的唯一标识
b. secret
公众号的appsecret
c. code
填写上一步获取的code参数
d. grant_type
填写为authorization_code
返回参数说明:
a. access_token
网页授权接口调用凭证,注意:此access_token
与基础支持的access_token
不同
b. expires_in
access_token
接口调用凭证超时时间,单位(秒)
c. refresh_token
用户刷新access_token
openid
用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
d. scope
用户授权的作用域,使用逗号(,)分隔
• 拉取用户信息(需scope为 snsapi_userinfo)
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
请求方法
https://api.weixin.qq.com/sns/userinfo? access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
参数说明
a. access_token
网页授权接口调用凭证,注意:此access_token与基础支持的 access_token
不同
c.openid
用户的唯一标识
d.lang
返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
正确时返回的JSON数据包如下:
{ "openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5 WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ
4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
此时就获取用户的信息了
• openid 是微信用户 对公众的唯一标示,不会因为设备的不同而发生变化,也没有时间限制,即使取消再关注,所生成的openid也是唯一的.
开发中的问题
▸1 .图片添加最大只能选择9张
wx.chooseImage({
count: maxNum, // 默认9
sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ["album"],
success: function (res) {
},fail:function(res){
} });
▸2 .图片上传只能一张一张上传
wx.uploadImage({
localId:currentlocalId, // 图片的localID
isShowProgressTips: 0, // 默认为1,显示进度提示
success: function (res) {
},fail:function(res){
//上传失败
}
});
▸3 .微信公众号的一些功能的开发,比如,授权,拍照,语音,必须线上才能调试,如果有知道测试环境能调试的,求指教.
相关链接
1.http://blog.csdn.net/zzwwjjdj1/article/details/52222137
2.http://blog.sina.com.cn/s/blog_13f84ca390102wnm2.html
网友评论