微信企业号第三方应用开发[四]——用户登录应用

应用被授权方企业号授权后,授权方企业号用户即可以登录应用。至此,接入企业号第三方应用的开发到了最后一步——获取登录用户信息。

在企业号开发中要获取用户信息,需要获取到用户经OAuth2.0验证时生成的code与企业号的corpid。在企业号第三方应用中也是需要得到这两个参数才能调用之后的一系列接口,特别的是,在企业号开发中corpid是自己的企业号固定的corpid,而企业号第三方应用要获取的则是授权方企业号corpid。

一、获取OAuth2.0的用户身份code

OAuth2.0验证接口说明

企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取成员的身份信息。

通过此接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案:

1、企业应用中的URL链接直接填写企业自己的页面地址

2、成员跳转到企业页面时,企业校验是否有代表成员身份的cookie,此cookie由企业生成

3、如果没有获取到cookie,重定向到OAuth验证链接,获取成员身份后,由企业生成代表成员身份的cookie

4、根据cookie获取成员身份,进入相应的页面

注意,此URL的域名,必须完全匹配企业应用设置项中的‘可信域名‘(如果你的redirect_uri有端口号,那‘可信域名‘也必须加上端口号),否则跳转时会提示redirect_uri参数错误。

企业获取code

企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

  • 参数说明
参数 必须 说明
appid 企业的CorpID
redirect_uri 授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type 返回类型,此时固定为:code
scope 应用授权作用域,此时固定为:snsapi_base
state 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
#wechat_redirect 微信终端使用此参数判断是否需要带上身份信息

员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。

假设我们处理登录逻辑的路径为http://AAA.com/api/weixin/login.do

在设置应用的主页路径时我们可以设置为OAuth验证的路径,而主页URL又支持$CORPID$模板,所以我们可以设置主页URL如下

https://open.weixin.qq.com/connect/oauth2/authorize?appid=$CORPID$&redirect_uri=http%3A%2F%2FAAA.com%2Fapi%2Fweixin%2Flogin.do&response_type=code&scope=snsapi_base&state=1#wechat_redirect

二、获取corpid

经过OAuth验证后跳转的路径为页面将跳转至 redirect_uri?code=CODE&state=STATE,URL中我们只能获取到code,我们更希望跳转后的路径是redirect_uri?corpid=CORPID&code=CODE&state=STATE,从而把corpid一并获取。

考虑到URL支持$CORPID$模板,逻辑上是会把我们配置的URL中所有$CORPID$字段转换成授权方企业号的corpid,所以我们把redirect_uri改为如下

http://AAA.com/api/weixin/login.do?corpid=$CORPID$

而$CORPID$应该是url转码后再加入,以防止$符号被编码,所以最后我们得出的主页URL为

https://open.weixin.qq.com/connect/oauth2/authorize?appid=$CORPID$&redirect_uri=http%3A%2F%2FAAA.com%2Fapi%2Fweixin%2Flogin.do%3Fcorpid%3D$CORPID$&response_type=code&scope=snsapi_base&state=1#wechat_redirect

得到corpid后我们即可根据企业号第三方应用接口获取到授权方企业的AccessToken,进而获取授权方企业号的用户信息。




[目录]

[上一篇]微信企业号第三方应用开发[三]——授权应用



微信企业号第三方应用开发[四]——用户登录应用

时间: 09-05

微信企业号第三方应用开发[四]——用户登录应用的相关文章

微信企业号第三方应用开发[一]——创建套件

注:文中绿色部分为摘自微信官方文档 第三方应用提供给企业的是一个应用,但是应用必须在套件下创建,所以第一步是要创建套件. 注册成为应用提供商,必须输入以下信息: 信息项 要求及说明 企业Logo 应用提供商的企业Logo,小于2M,640*640,背景为白色 企业简称 使用对外宣传的企业简称,能代表企业的名字,2-16个字 企业简介 描述企业所提供的服务,4-120个字 企业官网 应用服务商的企业官网 注册条件:a)拥有一个已经过认证的企业号 b)用系统管理员身份进行申请 摘自http://qy

微信企业号第三方应用开发[三]——授权应用

创建应用后即可测试授权应用 点击“测试授权”  确认发起授权安装测试 登陆企业号  勾选需要授权的应用  对应用进行可见范围设置  授权成功后等待跳转即可  在企业号管理员确认授权后微信后台会向开发者后台推送消息,开发者后台必须根据“第三方回调协议——授权成功推送auth_code事件”规则响应推送. 使用方式为‘线上自助注册授权使用’的套件,从企业号第三方官网发起授权时,微信服务器会向应用提供商的套件事件接收 URL(创建套件时填写)推送授权成功通知:从应用提供商网站发起的应用套件授权流程,由

微信企业号第三方应用开发[目录]

微信企业号第三方应用开发[前言] 微信企业号第三方应用开发[一]——创建套件

微信企业号第三方应用开发[前言]

关于微信 微信的口号是连接一切,其过程大概为 人与人的连接(基础聊天.朋友圈) 人与组织的连接(订阅号.公众号) 人与企业的连接(企业号) 关于企业号第三方应用  微信推出了企业号第三方应用,它的作用其实是在人与企业连接中继续深化.企业号第三方应用与企业号并不相同,企业号第三方应用是在企业号的基础上扩展的产物.企业号的开发是基于每个企业的企业号进行,相当于为每个企业定制软件:而企业号第三方应用即是把软件做成SaaS,做成一套产品让多个企业直接使用,降低客户成本.企业号的这一发展方向与目前大众软件

3、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录

最近由于项目赶着上线,一直没时间接着写博客,今天终于空出了时间.声名:我不是专业美工,所以界面问题,希望大家不要拍砖.登录界面如下: 在ASP.NET MVC中,要新增一个功能,我们首先要添加一个控制器,AccountController.cs,添加方法:右键单击Controllers文件夹, /// <summary> /// 登录页面 /// </summary> /// <returns></returns> public ActionResult I

微信企业号二次开发

1.注册完微信企业号,需要扫描二维码.就出现输入账号和密码的表单了.登陆就会出现下面的页面了.

博客系统开发_用户登录(二)

用户登录过程实质上是数据库查询的功能 一.页面设计 进入Admin模块下View中新建Login文件夹,新建index.php文件,在index.php中进行用户登录页面设计 代码如下 <!DOCTYPE HTML> <html> <head> <title>管理员登录</title> <script src="/Public/js/jquery-3.2.1.js"></script> <link

MVC下微信企业号网页应用开发调用JSSDK接口不成功问题

在MVC下进行企业微信里的网页应用开发,前台页面中为了调用图像接口,使用了JSSDK.按照官方文档进行了正确配置. 现象:WEB开发工具调试一切正常,但从手机企业微信应用进入页面后接口调用无效(这个页面是从一级页面链接过来的),开了调试模式后,显示config:ok.说明配置无误.经过反复检查,终于发现问题所在. 原因:在一级页面(http://xx.xxx.xxx/main/index)中的链接是使用htmlhelper来写的,即@Html.ActionLink("测试接口",&qu

android和php开发的用户登录以及注册功能

完成android的记住密码.自动登录以及发送短信.验证码倒计时功能.用户名和手机唯一性验证.以android为客户端.php为服务端