DingTalk_Demo icon indicating copy to clipboard operation
DingTalk_Demo copied to clipboard

有关access_token和jsticket有效时间的问题

Open CeresY opened this issue 7 years ago • 4 comments

博主你好。我之前看到钉钉的官方文档有针对access_token和jsticket有效时间有专门的处理。因为钉钉官方给的限制大概是每分钟请求1500次,access_token和Jsticket有效时间是2小时,所以官方demo都是把获取的凭证写入到文本里每隔1小时50分钟才更新一次。 但是博主好像把这块内容删除了,这样的话如果请求次数过频繁是不是容易引起钉钉服务器的屏蔽?

CeresY avatar Jan 29 '18 06:01 CeresY

哦,关于这一块之前实现了,但是没有更新过来。可以自己写个多线程来实现。或者用guava实现,guava可参考下面这个: `package com.mmall.common;

import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import org.slf4j.Logger; import org.slf4j.LoggerFactory;

import java.util.concurrent.TimeUnit;

/**

  • Created by geely */ public class TokenCache {

    private static Logger logger = LoggerFactory.getLogger(TokenCache.class);

    public static final String TOKEN_PREFIX = "token_";

    //LRU算法 private static LoadingCache<String,String> localCache = CacheBuilder.newBuilder().initialCapacity(1000).maximumSize(10000).expireAfterAccess(12, TimeUnit.HOURS) .build(new CacheLoader<String, String>() { //默认的数据加载实现,当调用get取值的时候,如果key没有对应的值,就调用这个方法进行加载. @Override public String load(String s) throws Exception { return "null"; } });

    public static void setKey(String key,String value){ localCache.put(key,value); }

    public static String getKey(String key){ String value = null; try { value = localCache.get(key); if("null".equals(value)){ return null; } return value; }catch (Exception e){ logger.error("localCache get error",e); } return null; } } `

shirayner avatar Feb 27 '18 01:02 shirayner

多线程可以参考:http://www.cnblogs.com/liuhongfeng/p/4848851.html (五,问题:但是如何让这个保存工作隔7200 秒进行保存呢?)这一节。

shirayner avatar Feb 27 '18 01:02 shirayner

最近有点忙,没有好好维护,后面会慢慢都改过来的,造成的不便敬请谅解

shirayner avatar Feb 27 '18 01:02 shirayner

@shirayner ;抱歉啊,最近项目刚好完成了钉钉的第三方应用的开发。谢谢的你的分享

CeresY avatar May 04 '18 08:05 CeresY