1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java微信授权 状态存储_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...

java微信授权 状态存储_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...

时间:2020-04-12 03:02:47

相关推荐

java微信授权 状态存储_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...

一.前言

为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等)

特别注意:只有认证的服务号有此接口权限

那么订阅号如何实现这个功能呢?可以通过另一个服务号来使用这个接口获取用户基本信息,因为对于未关注此服务号的用户,这个接口同样能够获取到用户基本信息。

二.前期准备

1.我的开发环境与工具说明

开发机器:一台Mac Book Pro

开发工具:

MyElipse

Paste_Image.png

系统环境:OS X EI Capitan 版本 10.11.5

微信web开发者工具

Paste_Image.png

注册一个微信公众号(订阅号或者服务号)

Paste_Image.png

Paste_Image.png

Paste_Image.png

注册一个新浪SAE帐号(用来部署JAVA服务)

三.实现过程

流程解析图

Paste_Image.png

1.check代码,并部署到新浪SAE

源码地址:/andli0626/wx_auth_by_java

通过myelipsecheck源码,并输入自己测试微信号的appID,appsecret

Paste_Image.png

导出war包

Paste_Image.png

Paste_Image.png

部署到新浪SAE

Paste_Image.png

Paste_Image.png

上次war包

Paste_Image.png

Paste_Image.png

核心代码

public class OAuthServlet extends HttpServlet {

private static final long serialVersionUID = -1847238807216447030L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("gb2312");

response.setCharacterEncoding("gb2312");

// 用户同意授权后,能获取到code

String code = request.getParameter("code");

// 用户同意授权

if (!"authdeny".equals(code)) {

String APPID = "";

String SECRET = "";

// 获取网页授权access_token

WeixinOauth2Token weixinOauth2Token = AdvancedUtil.getOauth2AccessToken(APPID, SECRET, code);

// 网页授权接口访问凭证

String accessToken = weixinOauth2Token.getAccessToken();

// 用户标识

String openId = weixinOauth2Token.getOpenId();

// 获取用户信息

SNSUserInfo snsUserInfo = AdvancedUtil.getSNSUserInfo(accessToken, openId);

// 设置要传递的参数

request.setAttribute("snsUserInfo", snsUserInfo);

}

// 跳转到index.jsp

request.getRequestDispatcher("index.jsp").forward(request, response);

}

}

web.xml配置

oauthServlet

org.liufeng.course.servlet.OAuthServlet

oauthServlet

/oauthServlet

index.jsp

2.配置授权回调域名

Paste_Image.png

Paste_Image.png

新浪SAE已经提供了测试的域名,还是很方便的

Paste_Image.png

必须配置,如果配置不正确,会导致以下错误

Paste_Image.png

3.构造网页授权链接

Paste_Image.png

主要是3个参数:

appid

redirect_uri 授权后重定向的回调链接地址

scope 应用授权作用域

snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid)

snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。

我的新浪SAE重定向页面是:

/authServlet

那么网页授权链接为

https://open./connect/oauth2/authorize?appid=wx8015b2139267655d&redirect_uri=/oauthServlet&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect

4.测试方法

第一种:通过微信测试帐号

Paste_Image.png

通过pc端的微信客户端,直接把网页授权链接发送到手机端

Paste_Image.png

Paste_Image.png

第二种:通过微信web开发者工具

直接将网页授权链接拷贝到地址栏,访问即可

Paste_Image.png

Paste_Image.png

常见错误说明

Paste_Image.png

应该是没有接口权限,需要进行开发者认证

Paste_Image.png

参考资料

《微信公众平台应用开发方法,技巧与案例》

微信公众平台官方指南

https://mp./wiki

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。