zoukankan      html  css  js  c++  java
  • 使用微信js接口的方法 ,以调用相机为例

     protected string GetTimeStamp_Str="";
            protected string nonceStr_Str = "";
            protected string signature_Str = "";
            protected void Page_Load(object sender, EventArgs e)
            {
                GetTimeStamp_Str = GetTimeStamp();
                //nonceStr_Str = new Guid().ToString("N");
    
                var GetTakenStr = HttpHelper.HttpGetConnectToServer("https://api.weixin.qq.com/cgi-bin/token", "grant_type=client_credential&appid=wx6596bfb9388cc63c&secret=eb0c0d643d4e7bd3a43b61fd1031a2f2");//get
                Taken_Model taken_Model=JsonHelper.DeserializeObject<Taken_Model>(GetTakenStr);
    
                var jsapi_ticket_Str = HttpHelper.HttpGetConnectToServer("https://api.weixin.qq.com/cgi-bin/ticket/getticket", "access_token=" + taken_Model.access_token + "&type=jsapi");//get
                Jsapi_Ticket jsapi_ticket = JsonHelper.DeserializeObject<Jsapi_Ticket>(jsapi_ticket_Str);
    
    
                TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                var tstem = GetTimeStamp_Str;// Convert.ToInt64(ts.TotalSeconds).ToString();
                var noncestr = "tianpeng";
                //var jsapi_ticket = "sM4AOVdWfPE4DxkXGEs8VF-YEiVh31f4b2Z4rz5E1kuduFEPIz0RgvSnRKebdULuK-yWvsNB_21vVh3IhyR1yg";
                var jmdata = "jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}";
                jmdata = string.Format(jmdata, jsapi_ticket.ticket, noncestr, tstem, "http://hstwx.wisdom-gps.com:52539/SignUp/SignUp.aspx");
                signature_Str = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(jmdata, "sha1");
                nonceStr_Str = noncestr;
    
            }
    
            protected void btn_Login_Click(object sender, EventArgs e)
            {
    
            }
    
            public static string GetTimeStamp()
            {
                TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                return Convert.ToInt64(ts.TotalSeconds).ToString();
            }
    
        }
      
    
             public class Taken_Model
             {
                 public string access_token { get; set; }
                 public int expires_in { get; set; }
             }
    
             public class Jsapi_Ticket
             {
                 public int errcode { get; set; }
                 public string errmsg { get; set; }
                 public string ticket { get; set; }
                 public int expires_in { get; set; }
             }


    前端的写法

    前端的写法
    <script>
                var GetTimeStamp_Str="<%=GetTimeStamp_Str%>";
                var nonceStr_Str ="<%=nonceStr_Str%>";
                var signature_Str = "<%=signature_Str%>";
    
                wx.config({
                    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: 'wx6596bfb9388cc63c', // 必填,公众号的唯一标识
                    timestamp: GetTimeStamp_Str, // 必填,生成签名的时间戳
                    nonceStr: nonceStr_Str, // 必填,生成签名的随机串
                    signature: signature_Str,// 必填,签名,见附录1
                    jsApiList: ['chooseImage', 'previewImage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
                wx.ready(function(){
    
                    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    
                });
                wx.error(function(res){
    
                    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    
                });
    
              
                function aaaaa()
                {
                    wx.chooseImage({
                        count: 1, // 默认9
                        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
                        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
                        success: function (res) {
                            var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                            alert("fsdfsfsd");
                        }
                    });
                }
        </script>

    如果

    signature不合法的话 可以在测试地址中比对http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
    如果url不合法的话 在js安全域名里面处理
    JS接口安全域名
    hstwx.wisdom-gps.com:52539 成功~~~~~(前端还要加个引用)
    测试地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
  • 相关阅读:
    yzoj P2344 斯卡布罗集市 题解
    yzoj P2350 逃离洞穴 题解
    yzoj P2349 取数 题解
    JXOI 2017 颜色 题解
    NOIP 2009 最优贸易 题解
    CH 4302 Interval GCD 题解
    CH4301 Can you answer on these queries III 题解
    Luogu2533[AHOI2012]信号塔
    Luogu3320[SDOI2015]寻宝游戏
    Luogu3187[HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/muxueyuan/p/5262886.html
Copyright © 2011-2022 走看看