美文网首页
微信公众平台开发小知识

微信公众平台开发小知识

作者: lsif的简书 | 来源:发表于2017-09-07 11:14 被阅读160次

    基础准备

    • 微信开发会有一个跨域的问题,按照如下路径设置一个 js 安全域名
    设置--> 公众号设置 --> 功能设置
    如图:

    js安全域名.png

    MP_verify_xgOsd3v07w4vWlN4.txt 文件一定要放在域名的根目录下面
    微信开发最重要的两个参数openid access_token, 很多接口必须有这两个参数才能调通.
    • 基本配置
    在 开发 --> 基本配置-->服务器配置 填写相关信息,使用js-sdk必须配置,微信用作消息校验,否则,微信的基本功能使用不了.ip白名单是获取基础token的服务器的ip,否则ip无效

    ip白名单.png 基本配置.png

    微信网页授权

    按照如下路径找到微信网页授权的文档:
    开发 --> 开发者工具 --> 开发者文档 -->微信网页开发 --> 微信网页授权
    文档说明也是非常详细的,主要三步:
    • 用户同意授权,获取返回的 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_basesnsapi_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

    相关文章

      网友评论

          本文标题:微信公众平台开发小知识

          本文链接:https://www.haomeiwen.com/subject/dpqlrxtx.html