• 微信公众号开发(5)---使用开源组件开发公众号OAuth2.0网页授权授权登录


    搞清微信公众号授权登录的步骤步骤,我们的开发就完成了一大步

    献上github 地址: https://github.com/Wechat-Group/weixin-java-tools/wiki/MP_OAuth2%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83

    第一步:需要在微信后台配置:注意,只填写自己的域名

      

      

       2.配置完毕后,构建网页授权url,配置重定向地址

      3.当用户同意授权后,会回调所设置的url并把authorization code传过来

      4, 拿到这个code 获得access token,与openid

      5.拿到之后,进行微信请求就可以拿到信息了

      

      

    	@Autowired
    	private WxMpInMemoryConfigStorage config;
    	@Autowired
    	private WxMpService wxMpService;
    	
    	@RequestMapping("/WxOauthLogin")
    	public void wxxLogin(HttpServletResponse response) throws IOException {
    		
    		//我们可以将config配置在xml文件中管理
    	    config.setAppId("wx426aad126775582c");
    	    config.setSecret("d79b69215c50cee0c848415eb34c659a");
    		wxMpService.setWxMpConfigStorage(config);
    		String redirectURI="http://ea40c4fc.ngrok.io/Wxredirect";
    		/**
    		 * 构造微信重定向地址
    		 * url不用我们进行urlencode
    		 * 
    		 */
    		String url=wxMpService.oauth2buildAuthorizationUrl(redirectURI, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
    		System.out.println("重定向地址------->"+url);
    		
    		response.sendRedirect(url);
    	}
    	
    	
    	
    	//**在用户点击授权后会触发下面的方法,即重定向的地址,必须在微信中打开哦**//
    	
    	@RequestMapping("/Wxredirect")
    	public void WxRedirect(String code,HttpServletResponse response) throws WxErrorException, IOException {
    				
    		
    		System.out.println("已经重定向到我这里了---success");
    		System.out.println("code--->"+code);
    		/*当用户同意授权后,会回调所设置的url并把authorization code传过来
    		 * ,然后用这个code获得access token,其中也包含用户的openid等信息
    		 */
    		WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
    		/*
    		 * 获取用户的基本信息
    		 */
    		WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
    		
    		System.out.print("用户的基本信息"+wxMpUser);
    		
    		/*
    		 * 业务逻辑处理,自己看自己的业务
    		 */
    		
    		@Cleanup
    		PrintWriter writer =response.getWriter();
    		
    		writer.write(wxMpUser.toString());
    	}
    

      

      

    原创打造,多多指教
  • 相关阅读:
    C#分部类和分部方法的使用
    C# 关于线程锁lock的使用方法
    Halcon标定流程及注意事项
    C#如何将ListView中的数据导出到Excel中
    Application.DoEvents()的作用
    (C#)使用队列(Queue)解决简单的并发问题
    C#的委托 VS C++的指针
    转载——卷积神经网络(CNN)基础入门介绍
    Linux启动详细过程(开机启动顺序)
    Nginx https 证书配置
  • 原文地址:https://www.cnblogs.com/iscys/p/9536937.html
Copyright © 2020-2023  润新知