Android 接入 企业微信三方登录遇到的坑

Android 接入 企业微信三方登录

接入企业微信登录的正向流程

  1. 第一点就是去注册应用(注册的时候注意他的应用信息是使用他的签名工具下载下来,安装到你的手机上面,你把你得应用通过签名也安装上面,打开签名工具输入你的App包名,就会生成,复制出来就好)
  2. 打开文档微信官方文档,根据他的 一步一步走,正常就没问题了,不正常出现问题就看下面

我接入的代码,可以直接使用(建议还是去官方文档去写哈,要是不知道哪些是多余代码,可以按照我这个保留)

注意事项:需要去官网拿lib包并且引入!!!!
引入方式看版本,我得gradle版本是8.3.1 我的引入方式如下

implementation files('libs/lib_wwapi-2.0.12.11.aar')

以下是根据文档写的
这是manifest部分

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    就单纯增加下面这一条就行   需要注意这个好像是Android 30版本 才支持queries(我记得是哈,有错误随时更正)
    <queries>
        <package android:name="com.tencent.wework" />
    </queries>
</manifest >
   

这是代码部分

 	private IWWAPI iwwapi;
     @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         iwwapi = WWAPIFactory.createWWAPI(this);
         iwwapi.registerApp( authBean.getSchema());
    }
    //使用时候随时调用这个方法就行
    private void toWxLogin() {
        WWMediaText txt = new WWMediaText();
        final WWAuthMessage.Req req = new WWAuthMessage.Req();
        req.sch = authBean.getSchema();
        req.appId = authBean.getAppId();
        req.agentId = authBean.getAgentId();
        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) {
                    	//rsp.code 就是咱们需要的code的了
                       Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });

    }

	//为什么要重载这个,需要你看下面第二个问题,就知道为啥了
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    }

最近这几天接入了一下企业微信三方登录总共遇到了几个问题

一、 就是出现吐司 ’没有此权限‘ 返 errCode:5 errMsg: no priveleges,这个有三种解决问题方案,看看以下图片,是从企业微信社区回答截取来的

请添加图片描述
也就说问题有三种
我是错在第一点(应用签名正确的是签名工具生成的,而我的是使用的SHA1)
说一下验证方法

  1. 管理端生成的sch appId agentId 查看是否正确
  2. 调用 getPackageName()方法获取出来包名并打印查看是否正确
  3. 确定你所注册的 企业微信登录应用的企业 和 企业微信App登录的企业是一个企业

二、这个是handleResp回调后出现异常,而且没有人遇到这个问题,然后排查demo,最后发现 demo中多了一个onActivityResult方法,最开始没注意因为他demo里面onActivityResult里面写了一些分享功能,所以最开始没有在意(说了这么多总结就是重载一下onActivityResult()方法,里面什么都不用写)
请添加图片描述

三、出现了以下的错误

 com.dw.phone: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED 
 should be specified when a receiver isn't being registered exclusively for system broadcasts

在搜索网上内容和排查发现好像是因为我现在的是Android 14 ,但是企业微信aar文件中WWAPIImpl.registerApp()初始化会有两个实现方法

    public boolean registerApp(String var1) {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addDataScheme(var1);
        intentFilter.addAction(var1);
        this.context.registerReceiver(this.mReciver, intentFilter);
        this.schema = var1;
        return true;
    }
    public boolean registerApp(String var1) {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addDataScheme(var1);
        intentFilter.addAction(var1);
        this.context.registerReceiver(this.mReciver, intentFilter);
        this.schema = var1;
        return true;
    }

在android 14中

Android 14 升级,动态注册广播接收器,需要flag的参数,
ContextCompat.RECEIVER_EXPORTED表示接收其他app发送的intent
//案例
this.context.registerReceiver(this.mReciver ,intentFilter,ContextCompat.RECEIVER_EXPORTED);
//但是企业微信提供的是
this.context.registerReceiver(this.mReciver, intentFilter);

在android 14中缺少参数,所以报错
可能更改结果就是版本 34 => 33

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值