zoukankan      html  css  js  c++  java
  • 微信开发笔记

    官方开发文档
     
    接入步骤
    1、利用filter获取微信验证
    需要更改端口为80,(默认端口不要写)
     
    遇到的问题:
    该帐号是微信公众平台帐号,不能用于登录微信开放平台
    需要重新注册,因为是独立的
     
    2、在开发-基本配置里找到appid、secret,然后填入下面图片中进行验证,如果校验通过,则可以通过此接口获取access_token
     

    微信公众平台接口调试工具

    如果校验失败,可以重新再试!
    3、通过access_token获取iplist
    https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
    获取微信服务器ip list:
    {"ip_list":["101.226.62.77"]}
    
    
    网页授权:
    填写第一步获取的code参数
    如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
    
    总结
    启用服务器配置后,无法推送获取,另外菜单也不能使用
    
    
    签名是为了给微信服务器发送随机穿并验证,并且是get方法
    以后所有的聊天请求都会由另外的post来处理
    
    
    网页授权的地址,不要带www,另外也不要有/,也就是com截止!
    内网穿透:
     http://www.ngrok.cc/
    openID is 公众号ID与用户微信ID合成加密而来
    所以才有了unionid
    由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
    方案一:为每个授权过的用户创建一个线程定时刷新token
    因为,用户受过权。可以利用refresh_token的30天期限特征不需要其再授权,
    除非取消了关注,重新关注后openid任然可以继续使用
    
    
    之前的逻辑全部错误!
      if (code == null || code.equals("authdeny")) {
                    isValidCode = false;
                }
    这个是用户不同意,然后取消授权后强制跳转到授权按钮
      //如果session未空或者取消授权,重定向到授权页面,这句没搞懂是什么意思
    这个是用于验证用户是否点击了授权同意按钮
    ,并不是拿来二次调用的!!!!!!!!!!!!!
    不对,是需要二次调用的,第二次调用因为有code了
    
    
    获取用户信息,只是获取本地的数据库表中的缓存,所以,没有必要使用access_token
    
    
    
    跨域 回调解决
     
    <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/hello"/>
    exc必须放在下面!!!!!!!!!!
     
    这个地方,以及其它若干地方需要去掉http
    
    
     
    // UserWx userWx = JSONObject.toJavaObject(jsonUser, UserWx.class); 报错需要解决
     
    项目位置:        System.out.println(System.getProperty("user.dir") );
    request.getSession().getServletContext().getRealPath("")
     
    用户点击认证连接,无论是否确认授权,都会调到redirectUrl页面, code可能会变为ahthden
    把code放在首口,可能是因为作者的回调地址也是认证地址
     
    //                    UserWxService memberService = (UserWxService) WebAppContext.getObject("UserWxService");
    //                    response.getWriter().print(obj);
                        userWx = userWxService.saveOrUpdate(userWx);
     
       //如果openid不存在,则返回state并跳转到注册,但是跳转需要用到 页面,可是参数怎么传过去
            
            //或者使用微信回调  XXX行不通
            //放在json里面作为
            
            //--不存在话返回标识,约定值,1,到达用户中心,2,到达注册页面
            response.getWriter().print(code);
    
    

    关于网页授权access_token和普通access_token的区别

    1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息; 

    2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。 

    关于微信用户登录的最后的决策:
    提供统一的页面式回调URL,然后后面所有的业务尽量在后台完成
  • 相关阅读:
    Problem D: 双向冒泡排序
    Problem C: 查找最大元素
    Problem D: 小平查密码
    Problem C: 文件单词首字母大写
    Problem B: 文件操作文本文件读入
    Problem A: 文件操作二进制文件读入
    Problem A: 实现链表(线性表)
    【leetcode】包含min函数的栈
    【leetcode】反转链表
    【leetcode】合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/marineblog/p/5915421.html
Copyright © 2011-2022 走看看