Android 企业微信登录 接入指南

举报
yechaoa 发表于 2022/05/30 23:06:58 2022/05/30
【摘要】 其实也挺简单的,那为什么还写呢,还不是因为微信文档写的不清不楚。。 1、创建应用 管理员登录企业微信管理后台,选择企业应用。选择已有应用或添加应用,进入应用详情页面。选择“企业微信授权登录”,在设置...

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

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'
        }
    }
    ...
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

以上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);
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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);
                }
            }
        });
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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参数就行了,我想这也是为了方便吧,其次也是为了安全,主要还是文档写的不行。


文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/103405167

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。