Android(安卓) 接入企业微信
安卓接入企业微信
概述:博主是个三流代码搬运工,最近接手某个课题,需要做一个数据可视化的 app
,将一些信息直观的统计并且展示在地图上,所以也会用到高德地图 API
的接口,所以后续也会分享一下使用高德 API
遇到的一些问题。有技术的看个热闹,没技术的窥个门道,权当增加业余知识~~
准备工作
既然要接入企业微信,必要的企业 微信管理员账号 还是要有的!
首先建一个类保存一下登陆时可能需要用到的各种 key
,具体看图片中每个 key
所对应的值;
QYWXConstants.class
public class QYWXConstants {
//企业id
public final static String CORPID = "***";
//应用ID
public final static String AGENT_ID = "***";
//应用密钥
public final static String SECRET = "***";
//应用schema
public final static String SCHEMA = "***";
//签名的key
public final static String APP_ALIAS = "android";
//包名
public final static String APP_PACKAGE_NAME = "com.example.testapplication";
//通讯录secret
public final static String MOBILE_LIST_SECRET = "***";
//后台请求链接前缀
public final static String ADMIN_LINK = "https://qyapi.weixin.qq.com/cgi-bin/";
//企业对外名称
public static final String CORP_NAME = "***";
}
corpid:
agentid & secret:
schema:
请注意,这里的应用签名为上图格式,可通过 gradle
生成后查看。
去除 md5
中间的 :
号,我试了好多次发现这样才能调出授权页,巨坑!!!
同时,在 app
的 build.gradle
填加以下配置:
signingConfigs {
release {
storeFile file('C:/Users/lonuslan/Desktop/debug.jks')
storePassword '***'
keyAlias '***'
keyPassword '***'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
签名文件的 storePassword
, keyAlias
, keyPassword
自定义;
然后添加企业微信的 sdk
jar 包到项目中:
在根目录新建 libs
文件夹, 添加 sdk
, 右击 jar
包 , add as a library. 由于官方给出的是解压包,要导入项目只能以模块导入。解压包中不包含jar包,只有在官方的演示代码中才包含jar包,这里贴出 jar
包的下载链接,有需要的使用。 qiwxsdkapi.jar
之后就可以按照官方文档愉快的进行开发了!!!
这里给以下示例代码,具体自己看官方文档,自己动手,丰衣足食,发扬中华名族传统美德从我做起!
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
private volatile static LoginActivity instance = null;
private static final String TAG = "LoginActivity";
private IWWAPI iwwapi;
private WWAuthMessage.Resp resp;
// private Toast mToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
registerApp();
//TODO 这里写你的逻辑登录代码,调用welogin()...
}
public void wxLogin() {
Log.i(TAG, "wxLogin...begin...");
final WWAuthMessage.Req req = new WWAuthMessage.Req();
req.sch = QYWXConstants.SCHEMA;
req.agentId = QYWXConstants.AGENT_ID;
req.appId = QYWXConstants.CORPID;
req.state = "wwapitest";
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) {
Log.i(TAG, "登陆取消");
Toast.makeText(LoginActivity.this, "登录取消", Toast.LENGTH_SHORT).show();
} else if (rsp.errCode == WWAuthMessage.ERR_FAIL) {
Log.i(TAG, "登陆失败");
Toast.makeText(LoginActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
} else if (rsp.errCode == WWAuthMessage.ERR_OK) {
String loginCode= rsp.code;
// ToastUtil.showShort(LoginActivity.this, loginCode);
//安卓中的网络请求必须写在子线程中,不能直接暴露在activity中
Intent intent = new Intent();
String accessToken = QywxUtil.getAccessToken(QYWXConstants.CORPID, QYWXConstants.SECRET);
String userId = QywxUtil.getUserId(accessToken, loginCode);
User user = QywxUtil.getUser(accessToken, userId);
intent.putExtra("user", user);
intent.setClass(LoginActivity.this, MainTabActivity.class);
ToastUtil.showShort(LoginActivity.this, "登陆成功");
startActivity(intent);
//TODO 获取用户的组织信息,判断其字段中是否包含“” ,有则跳转,无则限制登录
// String externalCorpName = user.getExternalProfile().getExternalCorpName();
// if (QYWXConstants.CORP_NAME.equals(externalCorpName)){
// intent.putExtra("user", user);
// ToastUtil.showShort(LoginActivity.this, "登陆成功");
// startActivity(intent);
// }else {
// ToastUtil.showShort(LoginActivity.this, "对不起,您没有该权限,请联系管理员");
// }
}
}
}
});
}
public void registerApp() {
iwwapi = WWAPIFactory.createWWAPI(LoginActivity.this);
iwwapi.registerApp(QYWXConstants.SCHEMA);
Log.i(TAG, "register...");
}
}
Android(安卓) 接入企业微信
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议。转载请注明来自 Hi I'm LouisLan!
代码已经找不到了,不好意思
QywxUtil这个文件能提供一下吗
嗯~建议百度...
你登录成功了吗?
企业微信已经成功调起,回调函数一直不执行是什么原因?
请问Android企业微信分享提示“没有此权限”是什么原因呀?
corpid在Android分享中不会被用到吗?