企业微信授权登陆提示没有权限,请问怎样解决?

2023/05/12
提问

我在企业微信中,申请了企业微信授权登录,

问题1.请问在申请时需要填写的 “应用签名”  从哪里获取到


问题出现步骤

1.我暂时把“应用签名” 输入入我生成的签名文件中 SHA1 的值,获取到 schema  如下图1

2.图2是我生成后的结果

3.从  “我的企业”  中获取 “企业ID” 作为CORPID

4.从 “应用管理” -》“自定义应用” 中获取 AgentId

5.在android studio 中设置好签名,如下:


signingConfigs {
    release {
        keyAlias 'key0'
        keyPassword '123456'
        storeFile file('test.jks')
        storePassword '123456'
    }
}


6.调用企业微信sdk的原码如下

public class MainActivity extends Activity {

    private static final String TAG = "MainActivity";
    private static String CORPID = "ww36cf81984eefac88"; //个人授权app 管理端后台单位信息中查找
    private static String AGENTID = "1000002"; // 管理端 单位应用中对应应用的AgentId
    private static String SCHEMA = "wwauth36cf81984eefac88000002 "; // 管理端后台-单位应用-授权登录-Android 中的schema

    IWWAPI iwwapi;
    int stringId;
    WWMediaMergedConvs wmc = new WWMediaMergedConvs();
    WWMediaMessage.WWMediaObject mo;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        stringId = getApplicationInfo().labelRes;
        iwwapi = WWAPIFactory.createWWAPI(this);
        iwwapi.registerApp(SCHEMA);


        findViewById(R.id.btut6).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intIDs();
                //sso登陆
                final WWAuthMessage.Req req = new WWAuthMessage.Req();
                req.sch = SCHEMA;
                req.appId = CORPID;
                req.agentId = AGENTID;
                req.state = "dd";
                req.scopes = new ArrayList<String>() {{
                    add("snsapi_base");
                }};
                iwwapi.sendMessage(req, new IWWAPIEventHandler() {
                    @Override
                    public void handleResp(BaseMessage resp) {
                        if (resp instanceof WWAuthMessage.Resp) {
                            WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;
                            String t = "";
                            if (rsp.errCode != WWAuthMessage.ERR_OK) {
                                Toast.makeText(MainActivity.this, t = "登陆失败," + rsp.errCode + " " + rsp.errMsg,
                                        Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(MainActivity.this, t = "登陆成功 code:" + rsp.code,
                                        Toast.LENGTH_SHORT).show();
                            }
                        }
                    }
                });
            }
        });

       
    }

    private void intIDs() {
        iwwapi.registerApp(SCHEMA);
    }

}



7.运行到真机后报没有权限,请问是哪里出错了



回答·1

请参考文档:https://developer.work.weixin.qq.com/document/path/91074


点击下载 签名生成工具。安装此工具,根据指引生成的应用签名字符串并填写在应用管理平台上,未填写或者填写错误将导致接口无法使用。

赞同
评论 5
回复 2024/05/13
这边反馈下
赞同
回复
回复 2024/05/16
请问一下,这边同楼主一样调用api代码,调用企业授权跳转,回调也收到了code都没啥问题,但是我看控制台却打印出来了一堆异常,这是为啥java.lang.IllegalArgumentException: Null input buffer at javax.crypto.Cipher.doFinal(Cipher.java:2051)
赞同
回复
回复 2024/05/16
OpenDataUtils这个工具类是干啥的,回调正常收到code,但是回有system的异常日志打印,秉着疑问的态度,来咨询一下,
赞同
回复
回复 2024/05/16
https://developer.work.weixin.qq.com/community/question/detail?content_id=16585022953956171788
赞同
回复
回复 2024/05/16
第二个问题,在页面oncreate registerApp注册初始化SDK,页面销毁注销app,为啥,页面跳转还是会报错.LoginActivity has leaked IntentReceiver com.tencent.wework.api.WWAPIImpl$3@2d471bc that was originally registered here. Are you missing a call to unregisterReceiver()?
赞同
回复
你还未登录,请先登录