Android 企业微信登录 接入指南

在这里插入图片描述
其实也挺简单的,那为什么还写呢,还不是因为微信文档写的不清不楚。。

1、创建应用

  1. 管理员登录企业微信管理后台,选择企业应用
  2. 选择已有应用或添加应用,进入应用详情页面。
  3. 选择“企业微信授权登录”,在设置界面填写Android的 App的签名&包名,设置完成后系统自动生成应用程序schema

这里要注意了,本地签名和线上签名可能会不一样,从而导致 没有此权限 调不起来企业微信授权,所以建议debug模式也用正式签名。

app>build.gradle:

android {
    ...
    signingConfigs {
        release {
            storeFile file("aaa")
            storePassword "aaa"
            keyAlias "aaa"
            keyPassword "aaa"
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

以上aaa参数自行修改即可。

2、导SDK

官方提供的是一个zip的压缩包,可以解压以module的方式导入。我是下载的Demo,然后在demo中拷的jar包,放在libs目录下并As a Library

3、初始化

即注册到企业微信,非常简单,就几行代码,注意参数别弄混了就行。

	IWWAPI iwwapi;
	private static final String APPID = "WW1e933be11645237c";
	private static final String AGENTID = "1000012";
	private static final String SCHEMA = "wwauth1e933be11645237c000012";
	
    private void registerApp() {
        iwwapi = WWAPIFactory.createWWAPI(this);
        iwwapi.registerApp(SCHEMA);
    }

registerApp()方法可以是在onCreate中调用,也可以是别的地方,看自己需求。

4、发起授权

    private void wxLogin() {
        final WWAuthMessage.Req req = new WWAuthMessage.Req();
        req.sch = SCHEMA;
        req.appId = APPID;
        req.agentId = AGENTID;
        req.state = "dd";
        iwwapi.sendMessage(req, resp -> {
            if (resp instanceof WWAuthMessage.Resp) {
                WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;
                if (rsp.errCode == WWAuthMessage.ERR_CANCEL) {
                    ToastUtil.showCenterToast("登录取消");
                } else if (rsp.errCode == WWAuthMessage.ERR_FAIL) {
                    ToastUtil.showCenterToast("登录失败");
                } else if (rsp.errCode == WWAuthMessage.ERR_OK) {
                    ToastUtil.showCenterToast("登录成功:" + rsp.code);
                }
            }
        });
    }

state 参数不是必传。
成功的情况下才可以拿到code。

到此就差不多了,把code传给后台就可以了。

为什么这么说呢,因为文档说code可以换取access_token,然后code加access_token可以获取UserId,而实际上根本没有获取access_token的方法,因为获取方法在服务端API的菜单下,而且还不需要code参数,而是要AppidSecret就行,亲测可以,这微信文档写的真是一言难尽。。一直以来也是受业界诟病多年。。

好了,既然移动端也可以拿到access_token,那就可以加上code直接拿到UserId,并传给后台。

当然,也可以在拿到code的时候就传给后台,剩下的让后台去获取也是一样的。

至于access_token为什么放在服务端API的菜单下,我略微翻看了下服务端的接口,大多都是只要access_token参数就行了,我想这也是为了方便吧,其次也是为了安全,主要还是文档写的不行。


发布了246 篇原创文章 · 获赞 441 · 访问量 68万+

猜你喜欢

转载自blog.csdn.net/yechaoa/article/details/103405167