您现在的位置: 首页 > 微信营销 > 微信动态文章 > 微信导航源码授权:如何在订阅号里实现oauth微信授权登录

微信导航源码授权:如何在订阅号里实现oauth微信授权登录

作者:pc668   来源:  热度:760  时间:2021-11-01
通过 微信公众平台---->权限接口 可以得知 微信的订阅号是没有授权登录接口的,只有服务号才有该权限微信导航源码授权。这点微信公众平台在多处反复强调 最终的事实是微信导航源码授权:微信订阅号是可以实现授权登录的! 二微信导航源码授权:具体实现步骤: 1. 首先在 微信公众平台(://mp.weixin.qq.com/) 【开发】----> 【基本配置】----->【服务器配置】完成基本的配置信息 URL: 这里的地

通过 微信公众平台---->权限接口 可以得知 微信的订阅号是没有授权登录接口的,只有服务号才有该权限微信导航源码授权。这点微信公众平台在多处反复强调

最终的事实是微信导航源码授权:微信订阅号是可以实现授权登录的!

二微信导航源码授权:具体实现步骤:

1. 首先在 微信公众平台(://mp.weixin.qq.com/) 【开发】----> 【基本配置】----->【服务器配置】完成基本的配置信息

URL: 这里的地址我写的是我们HTML5项目的某个Controller或Servlet的地址微信导航源码授权,例如 /weixin/checkSignature.do

注意这个CheckSignatureController中是要写代码的,代码的业务逻辑是要验证签名并返回echostr字段;还需要注意 这个地址必须是外网地址(内网不行的), 因为当你配置完所有的基本信息时,当提交的时候,微信公众平台会回答你刚才填的URL地址即/weixin/checkSignature.do, 如果你填内网的地址,那么这个URL调不到,如果签名验证不过去,这个基本配置就配置不成功微信导航源码授权。当你写好这个CheckSignatureController后,还要将代码放到测试环境中去,以便微信公众平台可以回调你这个Controller

[java] view plain copy

@Controller

@RequestMapping(value="/weixin")

public class CheckSignatureController extends BaseController {

private static transient final Logger log = LoggerFactory.getLogger(CheckSignatureController.class);

public static String WEIXIN_TOKEN = "Token";

@RequestMapping(value ="checkSignature.do", produces = "application/json; charset=utf-8")

@ResponseBody

public String checkSignature( request) {

String echostr = request.getParameter("echostr"); // 随机字符串

if (isSignature(request)) {

return echostr;

}

return null;

}

// 检查签名

public boolean isSignature( request) {

String signature = request.getParameter("signature"); // 微信加密签名

String timestamp = request.getParameter("timestamp"); // 时间戳

String nonce = request.getParameter("nonce"); // 随机数

String[] arr = new String[] {timestamp, nonce, WEIXIN_TOKEN};

Arrays.sort(arr);

String s = arr[0] arr[1] arr[2];

MessageDigest md;

byte[] digest = null;

try {

md = MessageDigest.getInstance("SHA-1");

digest = md.digest(s.getBytes("utf-8"));

} catch (Exception e) {

e.printStackTrace();

}

String sign = bytesToHexString(digest);

return signature.equals(sign);

}

public static final String bytesToHexString(byte[] bArray) {

StringBuffer sb = new StringBuffer(bArray.length);

String sTemp;

for (int i = 0; i

评论0

0

加载更多

登录

使用微信帐号或QQ直接登录,无需注册