Android 实战:APP 快速集成企业微信授权登录(附详细配置流程)

23 阅读4分钟

前言

在如今的企业级应用开发中,接入微信生态已经成为标配。特别是对于内部使用的办公 APP,接入企业微信授权登录不仅能提高员工的登录效率,还能打通企业内部的组织架构。

最近在做一个 Android 项目(店务助手),需要集成企业微信登录功能。原以为和微信开放平台登录一样简单,结果在配置环节踩了不少坑。今天特意整理了一份完整的流程,手把手教大家在 Android APP 中拉起企业微信登录。

第一步:后台应用配置(核心关键)

很多开发者拿到需求直接就开始写代码,这是大忌。企业微信登录必须在管理后台进行严格配置,否则 APP 端会报错(如 openid 获取失败)。

1. 开启授权登录接口

首先,登录企业微信管理后台,进入 「应用管理」->「应用」。找到你需要集成的自建应用。

在应用的详情页下方,找到 「开发者接口」 板块。这里我们需要重点关注 「企业微信授权登录」 这一项。

注意: 默认情况下它可能是未开启状态。你需要点击进入并开启该功能,同时配置好可信域名(如果涉及网页开发)。对于纯 APP 登录,确保这里的“已启用”状态是亮起的。

如下图所示: 在这里插入图片描述 (图 1:在开发者接口中启用“企业微信授权登录”)

2. 获取核心凭证:AgentId 和 Secret

开启功能后,返回应用详情页。在页面上方,你会看到两个至关重要的参数:

  • AgentId:应用的唯一标识。
  • Secret:应用的密钥(点击“查看”获取)。

这两个参数是 APP 端换取 code 以及服务端换取 access_token 的钥匙,请务必保存好。 在这里插入图片描述

(图 2:获取应用的 AgentId 和 Secret)

3. 获取企业 ID (CorpId)

除了应用级的参数,我们还需要企业级的 ID。点击左侧菜单栏的 「我的企业」,在右侧信息栏的最下方,找到 「企业 ID」(通常以 wwwx 开头)。

这个 ID 是全局唯一的,APP 初始化 SDK 时需要用到。 在这里插入图片描述 (图 3:在“我的企业”中查看企业 ID)


第二步:Android 端集成 SDK

配置工作完成后,我们进入 Android 开发环节。

1. 引入依赖

企业微信提供了专门的 SDK。你可以从企业微信开放平台下载 JAR 包,或者通过 Maven 仓库引入。

如果是本地集成,将 [lib_wwapi-3.0.0.7.aar](https://dldir1.qq.com/wework/wwopen/client_sdk/android/lib_wwapi-3.0.0.7.aar) 放入 libs` 目录并 Add as Library。

2. 初始化 SDK

建议在 ApplicationonCreate 中进行初始化,或者在使用前初始化。

// 注册应用到企业微信
private static final String APPID = "WW1e933be11645237c";
	private static final String AGENTID = "1000012";
	private static final String SCHEMA = "wwauth1e933be11645237c000012";
  private IWXAPI iwwapi;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		stringId = getApplicationInfo().labelRes;
		iwwapi = WWAPIFactory.createWWAPI(this);
		iwwapi.registerApp(SCHEMA);
		}

3. 发起登录请求

在你的登录页面,添加点击事件,发送登录授权请求。

	WWMediaText txt = new WWMediaText(((EditText) findViewById(R.id.et3)).getText().toString());
	txt.appPkg = getPackageName();
	txt.appName = getString(stringId);
	txt.appId = APPID;
	txt.agentId = AGENTID;
	iwwapi.sendMessage(txt);

4. 处理回调

这里是最容易出错的地方。企业微信的回调 Activity 是 WXEntryActivity

关键点:

  • 包名必须严格对应:你的包名.wxapi.WXEntryActivity
  • 并在 AndroidManifest.xml 中注册该 Activity,设置 exported="true"
final WWAuthMessage.Req req = new WWAuthMessage.Req();
req.sch = SCHEMA;
req.appId = APPID;
req.agentId = AGENTID;
req.state = "dd";
iwwapi.sendMessage(req, new IWWAPIEventHandler() {
	@Override
	public void handleResp(BaseMessage resp) {
		if (resp instanceof WWAuthMessage.Resp) {
			WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;
			if (rsp.errCode == WWAuthMessage.ERR_CANCEL) {
			Toast.makeText(MainActivity.this, "登录取消", Toast.LENGTH_SHORT).show();
			}else if (rsp.errCode == WWAuthMessage.ERR_FAIL) {
			Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
			} else if (rsp.errCode == WWAuthMessage.ERR_OK) {
			Toast.makeText(MainActivity.this, "登录成功:" + rsp.code,
			Toast.LENGTH_SHORT).show();
			}
		}
	}
});

第三步:常见问题与避坑指南

  1. 回调不响应? 检查 WXEntryActivity 的路径是否完全正确(包名+wxapi),且必须在 AndroidManifest.xml 中配置 android:exported="true"

  2. Scope 报错? 确保后台应用可见范围包含了当前测试用户的账号。

  3. Secret 泄露风险? 切记!Secret 绝对不要放在 Android 客户端代码中。Android 端只负责拉取 code,然后传给自己的服务器,由服务器拿着 code + Secret 去企业微信服务器换取用户信息。

结语

企业微信登录的集成流程整体来说比标准微信登录稍微繁琐一点,主要是后台配置的细节较多。只要对照着图 1、2、3 把 CorpIdAgentIdSecret 配置无误,代码端的逻辑其实非常标准化。

希望这篇软文能帮到正在做 Android 企业级应用开发的你!如果有遇到其他坑,欢迎在评论区交流。