• 微信公众号授权登录、获取用户信息(openid) 实现方式也是两种: 1.静默授权登录 授权登录以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知...

    微信公众号网页授权思路解析及具体代码

    微信开发文档
    实现方式也是两种:

    1.静默授权登录
    授权登录以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)特点:用户无感知;

    2.非静默授权登录
    非静默授权以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
    (区别:除了scope不一样,以及调用微信接口不一样,功能上,静默授权不需要用户确认,只需要用户访问某个网页,属于嵌套在普通网页里的授权形式,但是只能获取到用户的唯一标示openid和union id,无法拿到用户的微信头像、微信名称等个人信息,对于用户的简单认证还是很有用的。)

    非静默授权

    微信公众号技术开发文档: [https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432]
    首先编写一个工具类

    package com.wlw.util;
    import java.io.IOException;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
     
    import net.sf.json.JSONObject;
     
    /**
     * 
     * 工具类
     * 用来根据接口地址进行网络请求
     * @author wlw
     *
     */
    public class AuthUtil {
    	public static final String APP_ID = "****************";     //填写自己的APPID
    	public static final String APP_SECRET = "**************";   //填写自己的APPSECRET
        public static JSONObject doGetJson(String url) throws Exception, IOException {
    		JSONObject jsonObject=null;
    		//初始化httpClient
    		DefaultHttpClient client=new DefaultHttpClient();
    		//用Get方式进行提交
    		HttpGet httpGet=new HttpGet(url);
    		//发送请求
    		HttpResponse response= client.execute(httpGet);
        	//获取数据
    		HttpEntity entity=response.getEntity();
    		//格式转换
    		if (entity!=null) {
    			String result=EntityUtils.toString(entity,"UTF-8");
    			jsonObject=JSONObject.fromObject(result);
    		}
    		//释放链接
    		httpGet.releaseConnection();
    		return jsonObject;
        }
    	   
    }
    

    1.引导用户进入授权页面同意授权,获取code
    主要是发送请求:https://open.weixin.qq.com/connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_login,snsapi_userinfo&state=1,0#wechat_redirect
    其中各个参数的意义:

    2.如果用户同意授权,页面将跳转至 redirect_uri并且携带"?code=CODE&state=STATE"
    通过code换取网页授权access_token(后台操作)以及通过access_token换取用户信息

    package com.wlw.servlet;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.wlw.util.AuthUtil;
    import net.sf.json.JSONObject;
     
    /**
     * 回调地址
     * 
     * @author wlw
     *
     */
    @WebServlet("/redirect_uri")
    public class CallBackServlet extends HttpServlet {
    	
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		/**
    		 * 获取code
    		 */
    		String code=req.getParameter("code");
    	String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+AuthUtil.APP_ID
    			+ "&secret="+AuthUtil.APP_SECRET
    			+ "&code="+code
    			+ "&grant_type=authorization_code";
    	JSONObject jsonObject;
    	try {
    		jsonObject = AuthUtil.doGetJson(url);
    		String openid=jsonObject.getString("openid");
    		String token=jsonObject.getString("access_token");
    		/**
    		 * 拉取用户信息
    		 */
    		String infoUrl="https://api.weixin.qq.com/sns/userinfo?access_token="+token
    				+ "&openid="+openid
    				+ "&lang=zh_CN";
    		JSONObject userInfo=AuthUtil.doGetJson(infoUrl);//这里的userInfo已经是用户的信息了
    		System.out.println(userInfo);
    		//使用微信用户信息直接登录,无需注册和绑定
    		req.setAttribute("info", userInfo);
    		req.getRequestDispatcher("/index1.jsp").forward(req, resp);
    	} catch (Exception e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	}
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		super.doPost(req, resp);
    	}
    }
    

    这里解释一下回调函数:回调地址是当我们用户同意授权后,程序会进行对回调地址的访问。所以回调地址必须在公网上能够进行访问的。(用我自己的理解就相当于是你给腾讯平台发送请求,获取用户的信息,当你参数携带正确的情况下,腾讯就会向你发送一个请求,而这个请求的路径就是上面的redirect_uri所指的路径,所以回调函数的调用只有可能在公网上进行调用)

    以上就是微信非静默授权登录的代码部分,至于微信公众平台里的配置,看我下一个文章吧~

    一下是另外两种登录的api,跟上面类似步骤,知识参数不一样而已,详细看开发文档,对应参数,详细你一定可以解决的…………
    网站的微信授权登录是以二维码的形式 api网址 api https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN

    手机端微信授权登录api网址 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN

    特殊情况:html页面,controller不方便控制页面跳转的情况,公众平台上菜单的地址就不能写接口的地址,但是如果对微信接口的回调参数理解透彻的话,就很好吧,公众平台的菜单地址同样可以直接写它自身的授权接口,同时,回调地址写进入的页面,这样,相当于是通过菜单直接调微信授权接口,然后微信再跳转到你的网页页面上,同时可以携带上需要的code,页面上从路径中截取到code发送给后台,后台再进行access_token和openid的值的请求,就能正常的走通……

    参考文献

    在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
    
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
    
    尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问
    
    参考链接(请在微信客户端中打开此链接体验):
    
    scope为snsapi_base
    
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
    
    scope为snsapi_userinfo
    
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
    
    尤其注意:跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。
    
    //授权登录回调跳转,第一步先获取code参数,从而请求access_token
    var getRequest = GetRequest();
    var code = null;
    if (getRequest.code) {
        code = getRequest.code;
        var data = {};
        var url = getWeiContextPath() + "接口路径";
        data.code = code;//课程
        //同步ajax,供方法中调接口
        $.ajax({
            type: "POST",
            cache: false,
            data: data,
            async: false,
            url: url,
            success: function (result) {
                    //信息完整,直接进入测试页面
                    window.location.href = "index.html"
            },
            error: function (result) {
                alert(result.msg)
            }
        });
    } else {
        //没有code,再次请求获取code
        var pageUrl = window.location.href
            .replace(/[/]/g, "%2f")
            .replace(/[:]/g, "%3a")
            .replace(/[#]/g, "%23")
            .replace(/[&]/g, "%26")
            .replace(/[=]/g, "%3d");
        var url =
            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
            "wx7813bb6299b9b52a" +
            "&redirect_uri=" +
            pageUrl +
            "&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect";
        window.location.href = url;
    }
    
    
    //获取页面请求路径中的参数
    function GetRequest() {
        var url = location.search; //获取url中"?"符后的字串
        var theRequest = new Object();
        if (url.indexOf("?") != -1) {
            var str = url.substr(1);
            strs = str.split("&");
            for (var i = 0; i < strs.length; i++) {
                theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
            }
        }
        return theRequest;
    }
    
    展开全文
  • h5页面需要获取微信用户信息,参考微信开发者文档: 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,...

    微信开发者工具调试微信网页授权,点击‘登录’按钮无效

    问题描述

    h5页面需要获取微信用户信息,参考 微信开发者文档,一步步走到用开发者工具调试页面,却发现点击登录按钮没有反应!如下
    微信授权页面
    看日志信息
    在这里插入图片描述
    好吧,说这个图片路径是http,而应该是https,可是这是微信自己的页面啊,怎么改???
    然鹅不是这个原因,偶然发现点击按钮上边缘是有效的,点击之后重定向页面,跟文档描述的一模一样。为什么点击上边缘有效,而点击按钮无效?如果你也是这样,那么请打开电脑设置—字体大小–看看是不是125%???
    现在,把字体设置成100%,重新打开微信开发者工具,再去调试上面的页面,你会惊喜地发现,点按钮可以了。

    原因

    电脑设置的字体大小(非100%)的时候,会影响微信开发者工具dom节点事件绑定的位置,根据表现来看,并不影响渲染。

    补充一下

    过程中call_me_small_pure的博客 给了很大帮助,感谢!

    展开全文
  • 解决微信开发者工具”当前系统代理不是安全代理” . 故障1) 你有设置开启代理吗? 如果不需要,你点左上角的“代理”选项,关闭代理即可 故障2) 使用emedit工具,点击搜索,在文件中查找 在微信开发者工具的...

    解决微信开发者工具”当前系统代理不是安全代理”
    .
    故障1)
    你有设置开启代理吗?
    如果不需要,你点左上角的“代理”选项,关闭代理即可
    故障2)
    使用emedit工具,点击搜索,在文件中查找
    在微信开发者工具的安装目录,搜索”当前系统代理”

    .打开文件搜索工具

    然后就看到搜到一个js文件

    输入搜索关键字

    打开搜索到的js文件,找到”当前系统代理不是安全代理”的那一句话
    .找到小程序故障位置
    步骤阅4
    .修改代理状态
    把 !confirm(当前系统代理不是安全代理,是否信任?) 修改为false
    .问题解决

    .
    5
    .
    重启开发者工具,搞定
    故障3)
    微信小程序开发工具登录时,有时会遇到提示当前系统代理不是安全代理 是否信任 ,然后我们点击确认,却弹出Error:unable to verify the first certificate。这时无论我们在左上角选择设置是否选用代理都无法解决。本人曾经也很困惑,后来知道这是微信小程序开发者工具,为了信息的安全性,检查了系统代理,至于为什么选择不使用代理同样不行,就不得而知了。不过没事,现在解决了,所以拿出来和大家分享下。
    1,在电脑左下角开始处点开输入regedit或按快捷键win+R然后输入regedit,打开注册表编辑器
    2,通过下面的路径打开
    HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings,这时界面如下(注每个人里面项会有稍微不同,不重要)
    3,这时把里面所有的Proxy开头的项都删除掉,如
    ProxyEnable

    ProxyOverride

    有些人的还有ProxyServer等。(如果你怕删除后会对其他软件有影响,你可以重命名这些项,如改成ReProxy开头等,方便改回来。)
    4,删除成功后,一定要注销或者重启电脑,重启或注销电脑后再打开微信小程序开发工具,扫描登录就可以登录了,下次登录如果再遇到相同问题,重新按这个步骤操作一次即可(因为可能你的其他软件又把这些项写进去了)。
    总结:看问题的本质再下药,经本人实验解决了问题。谢谢网友的分享。(本人使用电脑:Windows 7 旗舰版 64位 )
    以上部分内容来自百度搜索,如有疑惑请联系本人删除。
    故障4)关闭防火墙,重启电脑
    故障5)关闭360之类的软件,重启

    展开全文
  • 最近在做企业微信开发,碰到一个很蛋疼的问题,企业微信后台怎么设置,在微信开发者工具上始终提示“未绑定企业号开发者”,百度了一圈也没找到解决的答案,最后问企业微信客服才解决,在此再次感谢为我解答问题的小...

      最近在做企业微信开发,碰到一个很蛋疼的问题,企业微信后台怎么设置,在微信开发者工具上始终提示“未绑定企业号开发者”,百度了一圈也没找到解决的答案,最后问企业微信客服才解决,在此再次感谢为我解答问题的小姐姐(哥哥),耐心的为我一步步分析问题,经过一个小时的不懈努力,终于搞定。问题描述以及相关解决方案看图:  

      但是,按照客服说的三条我都做了,没问题啊,郁闷~~~~

      最后客服问我,"对方是否登录管理后台去勾选开发者工具呢", 于是,灵光一闪,对奥,难道是?赶快用另一个微信号登录一看,果然没有勾选,再然后,自己去实验吧。

     

    转载于:https://www.cnblogs.com/learnmo/p/9580318.html

    展开全文
  • 上一篇文章中https://blog.csdn.net/u014650759/article/details/90701866,我们已经安装好了微信开发者工具,并导入了一个Demo项目,这篇文章,将就开发者工具进行简单的介绍,方便你开发实用编译器,更好的开发小...

    上一篇文章中https://blog.csdn.net/u014650759/article/details/90701866,我们已经安装好了微信开发者工具,并导入了一个Demo项目,这篇文章,将就开发者工具进行简单的介绍,方便你开发实用编译器,更好的开发小程序。

    1.机型选择:小程序以IPhone7的屏幕尺寸为设计标准,让UI以IPhone7屏幕尺寸来切图。
    2.预览界面:写好视图布局后点击编译,视图界面刷新显示
    3.编译:代码更改后刷新编译。
    4.预览界面:查看编译后的效果,仅限于登录开发工具的开发者本人可以扫码并预览,其他人无法扫码预览。
    5.真机调试:扫描生成的二维码,真机进行调试。
    6.资源文件:对应项目的文件目录,一般可以在这里进行断点调试。
    7.数据存储:显示的是本地存储的数据,对应的相关API是wx.setStorageSync(key,data)
    8.视图代码:标组件以子父层级结构呈现,方便查看调试。
    9.9-1:代码体积,微信限制 2M 以内。  5-2:ES语法转换,开发中一般不校验合法域名信息 。5-3:域名信息:小程序后台要做配置服务器域名,有request 域名,socket 域名以及uploadFile和downloadFile域名。注意:域名小程序要求必须是https
    10.项目信息:展示项目所包含的文件,以及进行相关操作
    11.代码区域:进行项目下具体文件的代码编辑

    接下来,通过上面打开的项目,可以看到小程序框架以及目录结构,下面开始对代码架构目录做简要介绍:app.js、app.json、app.wxss

    1. app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量,调用框架提供的丰富的 API。例如上面的界面展示了该代码文件中,数据存储操作,跳转登录页面,以及获取用户信息。
    2. ​app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序的窗口、背景色,配置导航条样式,配置默认标题,添加新的页面后也要在此文件中添加新页面申明。注意该文件不可添加任何注释。
    3. app.wxss 是整个小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。其格式和写法,类似于css,不过是css的一个子集,也就是说有些css写法是不支持的。
    4. project.config.json是小程序的工具配置文件,可以做一些个性化配置,例如界面颜色、编译配置等等。在工具上做的任何配置都会写入到这个文件,当重新安装时,只要载入同一个项目的代码包,开发者工具就会自动配置,通常无需修改。
    5. sitemap.json是用来配置小程序及其页面是否允许被微信索引,当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中,通常无需修改。

    这里上面讲解了小程序的项目文件,而小程序的交互是通过页面来进行的,所以同时我们也需要知道,小程序的页面组成,查看page文件夹下的页面文件,可以发现

    总结,至此,我们已经大概知道了小程序的开发工具内部区域功能布局,及其项目结构文件介绍。

    展开全文
  • title: 微信开发者工具–码云项目的导入 date: 2020-05-04 21:37:11 tags: 小程序 第一步: -打开开发者工具,新建项目,填写项目名称,例:demo -选择一个空目录存放此项目 -填写小程序的AppID(在微信公众平台...
  • 如何通过网页授权获取用户基本信息(国家,省,市,昵称)相关信息 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用户信息。换...
  • 有时候,我们在使用微信开发者工具导入别人开发好的项目时会提示:登录用户不是该小程序的开发者。如下图所示: 这时候,找到“project.config.json”文件,我们需要修改项目中的“project.config.json”文件。 ...
  • 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 现在,我们要实现一个微信内网页,通过微信访问网页时,网页会展示微信用户的个人信息。因为涉及...
  • 微信开发者工具中 实现微信小程序之相机拍照功能的开发 包括相机拍照文件相册的打开 镜头的反转等
  • 微信在线接口工具调试使用
  • 一、前言 这次的项目主要是关于微信公众号的一个开发,本人这次分配的模块是后台微信公众号的支付和退款,第一次接触微信公众的项目刚开始一脸懵逼,开发过程中遇到各种坑,所以想自己写一篇详细的关于微信公众号的...
  • 微信公众号开发是get请求和post请求空格导致拿不到数据。
  • 微信开发, 微信授权获取用户信息,附代码,想学习的小伙伴赶紧来吧
  • 未绑定企业号开发者

    2020-04-20 19:57:55
    “未绑定企业号开发者”问题 一直以来都是通过微信...我使用到的是利用”OAuth2“获取用户的userid进而进行后面的业务逻辑,在微信开发者工具打开网页地址时,发现是无法直接使用的,提示”未绑定企业号开发者...
  • 大家看下者请求有什么问题,为什么在微信开发工具里可以正常请求,在手机微信里就空白。 ``` ![图片说明](https://img-ask.csdn.net/upload/201601/23/1453533202_410140.png) 如果把 base 换成 info 就直接提示...
  • 先用微信sdk的定位功能,获取用户的经纬度  2.把经纬度通过百度地图接口转换经纬度  3.通过百度地图接口,通过转换后的经纬度获取对应的位置信息 一.微信公众好SDK使用 步骤一:绑定域名 先登录微信公众...
  • 报错如图所示。 一开始是以为微信公众平台没有添加开发者,管理员也不行。后面发现是开发者工具里面的AppID不对,查看更多,有个详情, 把这个默认的AppID换成自己的就好了 ...
  • 微信web开发者工具 请求授权页面 报错 redirect_uri 参数错误 原因:redirect_uri ...网页授权获取用户基本信息 OAuth2.0网页授权 授权回调页面域名: 127.0.0.1:8080 本地(测试号) 正式号:必须是域名。 ...
  • 一、通过基础接口token获取用户信息 1、获取token https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&amp;appid=APPID&amp;secret=APPSECRET 2、获取个人信息(如果不关注公众号,...
1 2 3 4 5 ... 20
收藏数 41,527
精华内容 16,610