钉钉微应用怎么进入_钉钉微应用如何打开本地app (Android)-问答-阿里云开发者社区-阿里云...

本文主要讨论在Android环境下,如何在钉钉微应用中打开本地应用程序。作者遇到授权问题,尝试使用dd.device.launcher.checkInstalledApps方法失败,报错为not authorized。通过分析代码和配置,探讨了可能的解决方案,包括正确设置签名、时间戳等参数,并提供了直接运行的代码示例。
摘要由CSDN通过智能技术生成

老李归来

2016-01-28 10:14:09

Re钉钉微应用如何打开本地app (Android)经测试,免登认证已成功,执行 dd.device.launcher.checkInstalledApps 失败报not authorized

-------------------------

回 2楼识器的帖子你好,我参考了例子,我用调试工具获取的signature 已自己生成的对比,是一致的,但是就是在执行 dd.device.launcher.checkInstalledApps报未授权not authorized    errCode:7

-------------------------

回 4楼识器的帖子按你所说,我把dd 去掉了,还是不可以

-------------------------

Re钉钉微应用如何打开本地app (Android)

为什么我先访问action 签名后回到页面会认证说权限校验失败

@RequestMapping(value="/dd/openCoreMail.action")

public String openCoreMail(HttpServletRequest request,ModelMap model){

String url=request.getRequestURL().toString();

String querString=request.getQueryString();

if(!StringUtils.isEmpty(querString)&&(!querString.equals("null"))){

try {

querString=URLEncoder.encode(querString, "UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}else{

querString=null;

}

String result=AuthHelper.getConfig(url,querString);

JSONObject  jobj=JSONObject.fromObject(result);

System.out.println(result);

Map map =new HashMap();

map.put("SIGNATURE", jobj.getString("signature"));

map.put("NONCESTR", jobj.getString("nonceStr"));

map.put("TIMESTAMP", jobj.getString("timeStamp"));

map.put("CORPID", Env.CORP_ID);

map.put("APPID", null);

model.addAttribute("ROOT",map);

return "dingTalk/openCoreMail";

}

下面是页面

pageEncoding="UTF-8"%>

openCoreMail

dd.config({

agentId : '${ROOT.APPID}',

corpId : '${ROOT.CORPID}',

timeStamp : '${ROOT.TIMESTAMP}',

nonceStr : '${ROOT.NONCESTR}',

signature : '${ROOT.SIGNATURE}',

jsApiList : [ 'device.notification.alert',

'device.notification.confirm',

'runtime.permission.requestAuthCode',

'runtime.permission.requestJsApis',

'device.launcher.launchApp',

'device.launcher.checkInstalledApps'

]

});

dd.error(function(err) {

alert("aa" + JSON.stringify(err));

});

function aa(data) {

alert("call:" + data);

}

function openMail(data) {

dd.device.launcher.launchApp({

app : 'cn.mailtech.app', //iOS:应用scheme;Android:应用包名

onSuccess : function(data) {

//alert(data);

},

onFail : function(err) {

alert("app:" + JSON.stringify(err));

}

});

}

dd.ready(function(bridge) {

dd.runtime.permission.requestAuthCode({

corpId : '${ROOT.CORPID}',

onSuccess : function(info) {

openMail(info);

//MobileMeetingAction.getDDUserByCode(info.code, openMail);

},

onFail : function(err) {

alert("hha" + JSON.stringify(err));

}

});

});

但是如果我直接不通过action  直接不把页面放在WEB_INF如下却可以,有什么解决办法没

pageEncoding="UTF-8"%>

org.apache.commons.lang.StringUtils,java.net.URLEncoder,

java.io.UnsupportedEncodingException,com.hbglobal.listener.DingDingListener,

net.sf.json.JSONObject,com.hbglobal.ding.po.Env" %>

openCoreMail

String url=request.getRequestURL().toString();

String querString=request.getQueryString();

System.out.println(url+":"+querString);

if(!StringUtils.isEmpty(querString)&&(!querString.equals("null"))){

try {

querString=URLEncoder.encode(querString, "UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}else{

querString=null;

}

String result=AuthHelper.getConfig(url,querString);

JSONObject  jobj=JSONObject.fromObject(result);

System.out.println(result);

String SIGNATURE= jobj.getString("signature");

String NONCESTR=jobj.getString("nonceStr");

String TIMESTAMP= jobj.getString("timeStamp");

String CORPID= Env.CORP_ID;

%>

启动范文

$(function(){

dd.config({

agentId : '9868138',

corpId : '',

timeStamp : '',

nonceStr : '',

signature : '',

jsApiList : [ 'device.notification.alert',

'device.notification.confirm',

'runtime.permission.requestAuthCode',

'runtime.permission.requestJsApis',

'device.launcher.launchApp',

'device.launcher.checkInstalledApps'

]

});

});

function aa(data) {

alert("call:" + data);

}

function openMail(data) {

dd.device.launcher.launchApp({

apps :'cn.mailtech.app' , //iOS:应用scheme;Android:应用包名

onSuccess : function(data) {

alert(data);

},

onFail : function(err) {

alert("app:" + JSON.stringify(err));

}

});

}

dd.ready(function() {

dd.runtime.permission.requestAuthCode({

corpId : '',

onSuccess : function(info) {

//MobileMeetingAction.getDDUserByCode(info.code, openMail);

},

onFail : function(err) {

alert("hha" + JSON.stringify(err));

}

});

});

dd.error(function(err) {

alert("aa" + JSON.stringify(err));

});

0

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值