微信公众号开发者怎么注册(微信公众号开发之微信公众号授权登录

生活常识 2023-04-16 17:34生活常识www.baidianfengw.cn

微信公众平台中的openid是什么?微信微信官方账号开发的微信微信官方账号授权登录(7)

如果用户在微信客户端访问第三方网页,微信官方账号可以通过微信网页的授权机制获取用户的基本信息,从而实现业务逻辑。

步骤1:用户同意授权并获得代码。

第二步用代码交换网页授权access_token。

步骤3:刷新访问令牌(如有必要)

第四步拉取用户信息(作用域需要snsapi_user)。

附件5:检查授权证书(access_token)是否有效。

之一步用户同意授权,获取code

在保证微信公众号有权限授权范围(范围参数)的前提下(服务号获得高级接口后,默认在范围参数中有snsapi_base和snsapi_user),引导关注者打开以下页面

https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid REDIRECT _ uri=REDIRECT _ uri response _ type=code scope=SCOP estate=STATE # we chat _ REDIRECT

如果消息 此链接不可访问。请检查参数是否填写错误,以及您是否拥有范围参数对应的授权范围权限。

第二步通过code换取网页授权access_token

请注意,代码是换来一个特殊的网页授权access_token,和基础支持中的access_token不同(access_token是用来调用其他接口的)。微信官方账号可以通过以下接口获取网页授权access_token。如果网页授权的范围是snsapi_base,则本步骤获取网页授权的access_token,获取openid,以snsapi_base形式进行网页授权的过程到此结束。

特别说明由于微信官方账号的安全等级 s secret和获得的access_token非常高,它们必须只存储在服务器中,不允许传输到客户端。诸如刷新access_token和通过access_token获取用户信息之类的后续步骤也必须从服务器发起。

请求

获取代码后,请求以下链接以获取access _ token:https://api.weixin.qq.com/sns/oauth2/access_token? appid=appid secret=secret code=code grant _ type=authorization _ code

第三步刷新access_token(如果需要)

因为access_token的有效期很短,所以当access_token超时时,可以使用refresh_token进行刷新。refresh_token的有效期为30天。当refresh_token过期时,用户需要重新授权。

请求

在第二步中获得刷新令牌后,请求以下链接以获得访问令牌https://api.weixin.qq.com/sns/oauth2/refresh_token? appid=appid grant _ type=REFRESH _ TOKEN刷新令牌=刷新令牌

第四步拉取用户信息(需scope为 snsapi_user)

如果网页的授权范围是snsapi_user,此时开发者可以通过access_token和openid拉取用户信息。

请求

http:GET(请使用https协议)https://api.weixin.qq.com/sns/user? ACCESS _ token=ACCESS _ token OpenID=OpenID lang=zh _ CN

附检验授权凭证(access_token)是否有效

请求

http:GET(请使用https协议)https://api.weixin.qq.com/sns/auth? ACCESS _ token=ACCESS _ token OPENID=OPENID

一、配置授权的域名

微信微信官方账号请求用户对网页进行授权前,开发者需要在 开发-界面权限-网页服务-网页账号-网页授权获取用户基本信息。在公众平台官网。请注意,这里填写的是域名(一个字符串),不是网址,所以请不要添加http://之类的协议头;这里用微信公众平台测试账号做测试,具体步骤如下开发者工具-公众平台测试账号-网页授权获取用户基本信息。

点击【修改】进入我们需要配置授权域名的页面,然后点击【确认】保存。

这里我使用NATAPP将本地地址映射到外部域名,所以我只能在这里配置我的外部域名。

二、编写我们的跳转授权页面接口

这里我们新建一个Controller,在记得一定要redirect重定向

?说明上面我们是采用前后端分离的方式,如果不是前后端分离注解改成@Controller返回成String类型,代码改成

return #34redirect:#34+url

在上面,我们需要设置一个回调 ,在这个回调 里,我们能获取到授权后返回给我们的参数

?说明如果这里希望直接跳转到页面显示,跟上面一样@RestController注解改成@Controller注解,返回类型改成String(对应自己的页面即可)

WxAuthController.java

package com.xu.wemall.controller.weixinimport com.alibaba.fastjson. ONimport com.alibaba.fastjson. ONObjectimport com.xu.wemall.commons.constants.WXConstantimport io.swagger.annotations.Apiimport lombok.extern.slf4j.Slf4jimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.web.bind.annotation.RequestMappingimport org.springframework.web.bind.annotation.RestControllerimport org.springframework.web.client.RestTemplateimport javax.servlet.http.HttpServletRequestimport javax.servlet.http.HttpServletResponseimport java.io.IOExceptionimport java.net.URLEncoder/ 类名称: LoginController 类描述: 与微信对接登陆验证 @author RonnieXu 创建时间:2017年12月5日上午10:52:13 /@Slf4j@RestController@Api(tags = #34授权登录接口#34)@RequestMapping(value = #34/wxAuth#34)public class WxAuthController { @Autowired private RestTemplate restTemplate @RequestMapping(#34/login#34) public void wxLogin(HttpServletResponse response) throws IOException { //请求获取code的回调地址 //用线上环境的域名或者用内网穿透,不能用ip String callBack = #34http://jialeyuan.nat300.top/wxAuth/callBack#34 //请求地址 String url = #34https://open.weixin.qq.com/connect/oauth2/authorize#34 + #34?appid=#34 + WXConstant.TEST_APPID + #34redirect_uri=#34 + URLEncoder.encode(callBack) + #34response_type=code#34 + #34scope=snsapi_user#34 + #34state=STATE#wechat_redirect#34 //重定向 response.sendRedirect(url) } // 回调 @RequestMapping(#34/callBack#34) public void wxCallBack(HttpServletRequest request,HttpServletResponse response) throws IOException { String code = request.getParameter(#34code#34) //获取access_token String url = #34https://api.weixin.qq.com/sns/oauth2/access_token#34 + #34?appid=#34 + WXConstant.TEST_APPID + #34secret=#34 + WXConstant.TEST_APPSECRET + #34code=#34 + code + #34grant_type=authorization_code#34 String result = restTemplate.getForObject(url, String.class) System.out.println(#34请求获取access_token:#34 + result) //返回结果的json对象 ONObject resultObject = ON.parseObject(result) //请求获取userInfo String Url = #34https://api.weixin.qq.com/sns/user#34 + #34?access_token=#34 + resultObject.getString(#34access_token#34) + #34openid=#34 + resultObject.getString(#34openid#34) + #34lang=zh_CN#34 String resultInfo = restTemplate.getForObject(Url, String.class) //此时已获取到userInfo,再根据业务进行处理 log.(#34请求获取userInfo:{}#34, resultInfo) }}

三、测试

我们用【微信开发者工具】进行测试(不能用PC浏览器,微信公众号监测到是PC浏览器会显示不支持对此发送此请求)

?在【微信开发者工具】地址栏中输入Controller中的之一个requestMapping请求http://jialeyuan.nat300.top/wxAuth/login,回车发送请求

?可以看到页面发生了跳转,页面出现了授权提示文字

?,我们的控制台也已经成功获取到了授权的用户信息

?至此整个调用全部走通,谢谢大家,下回再见!

微信公众号开发者模式登录 微信公众号登录接口开通步骤

Copyright@2015-2025 白癜风网版板所有