应用怎么获得微信登录授权(APP对接微信登录接口)

首页教程更新时间:2023-02-09 10:51:40
背景

现在我们APP的登录、特殊事件提醒,验证码之类的都是短信通知用户。现在这个短信运维成本也越来越高, 一条短信的成本基本达到了4分钱左右,我们APP才2万的注册用户短信的费用每个月都要几千块,为了减低我们的运维成本,我们要对接微信生态,从微信登录,再到通知走微信公众号推送,这样预计每个月可以节省几千块。

时序图

应用怎么获得微信登录授权,APP对接微信登录接口(1)

登录时序图

移动应用微信登录是基于OAuth2.0 协议标准构建的微信 OAuth2.0 授权登录系统。

登录流程

1、移动应用微信授权登录获取code

开发人员需要配合微信开放平台的SDK进行授权登录请求。正确接入 SDK 后并拥有相关授权域(scope)权限后,开发者移动应用会在终端本地拉起微信应用进行授权登录,微信用户确认后微信将拉起开发者移动应用,并带上授权临时票据(code)。

iOS 平台应用授权登录接入代码示例(请参考 iOS 接入指南): -(void)sendAuthRequest { //构造 SendAuthReq 结构体 SendAuthReq* req =[[[SendAuthReq alloc]init]autorelease]; req.scope = @"snsapi_userinfo"; req.state = @"123"; //第三方向微信终端发送一个 SendAuthReq 消息结构 [WXApi sendReq:req]; } android 平台应用授权登录接入代码示例(请参考 Android 接入指南): { // send oauth request Final SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "wechat_sdk_demo_test"; api.sendReq(req); }


参数说明

参数

是否必须

说明

appid

应用唯一标识,在微信开放平台提交应用审核通过后获得

scope

应用授权作用域,如获取用户个人信息则填写 snsapi_userinfo

state

用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验。在 state 传递的过程中会将该参数作为 url 的一部分进行处理,因此建议对该参数进行url encode操作,防止其中含有影响 url 解析的特殊字符(如'#'、'&'等)导致该参数无法正确回传。

2、云端根据微信登录的code进行业务关联

@Slf4j @Service public class WeixinServiceImpl implements WeixinService { /** * 获取登录tokenurl */ final public static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8713050991911d16&secret=54f57519a5e6b74b5bdcbc40a85e1354&code=${code}&grant_type=authorization_code"; /** * 微信获取用户信息url */ final public static String USER_INFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=${access_token}&openid=${openid}"; @Autowired private RestTemplateClient restTemplateClient; //通过移动端微信登录的code获取openid及accessToken @Override public AccessTokenResp codeAuthAccessToken(String code) { //返回的是text/plain格式,需要转 String accessTokenRespText = restTemplateClient.doPostForJSON_UTF8(ACCESS_TOKEN_URL .replace("${code}" ,code ), String.class ); return JSON.parseObject(accessTokenRespText , AccessTokenResp.class); } //根据access_token与openid获取用户的头像、用户名、unionid等信息 @Override public UserInfoResp getWeixinUserInfo(String token, String openid) { //返回的是text/plain格式,需要转 String accessTokenRespText = restTemplateClient.doPostForJSON_UTF8(USER_INFO_URL .replace("${access_token}" ,token ) .replace("${openid}" ,openid ), String.class ); return JSON.parseObject(accessTokenRespText , UserInfoResp.class); } }总结

整个微信登录的流程还是挺简洁的,我们的目标是方便用户的使用,比如一方面对接微信登录后将头像、用户昵称直接可以同步过来,另一方面减少短信,甚至达到不发送短信的目的,达到降低我们的运维成本的目的。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
GaragePayMac版V1.7.5
GaragePayMac版V1.7.5
下载
TorquePro(车况监控)
TorquePro(车况监控)
下载
最后的冒险者
最后的冒险者
下载
钨都云
钨都云
下载
聚亮电竞
聚亮电竞
下载
逗趣微视app
逗趣微视app
下载
成学课堂电脑版
成学课堂电脑版
下载
iCanHazShortcutMac版V1.2.0
iCanHazShortcutMac版V1.2.0
下载
萌龙养成记
萌龙养成记
下载
上古卷轴5重制版美丽的Jordis人物MOD
上古卷轴5重制版美丽的Jordis人物MOD
下载
彩虹云任务
彩虹云任务
下载
五年级语文下册全解苏教版
五年级语文下册全解苏教版
下载
音乐拍电脑版
音乐拍电脑版
下载
大战僵尸英雄出世
大战僵尸英雄出世
下载
轩辕诀红包版
轩辕诀红包版
下载
奶油高手3D
奶油高手3D
下载