环信 token 有效期一般为七天,第一次获取后判断有效是否再次获取。
# 获取token指令
def get_auth_token_from_remote
body = {"grant_type" => "client_credentials",
"client_id" => CLIEND_ID,
"client_secret" => CLIEND_SECRET}
result = get_resquest_back("/token","post",false,true,body)# get_resquest_back获取tokenhttp的方法
@current_token = AuthToken.new(result["access_token"],result["expires_in"],result["application"],Time.now)
end
# 获取授权指令
def get_auth_token
if !defined?(@current_token)
#都会进入
get_auth_token_from_remote
elsif !@current_token.is_valid_token?
get_auth_token_from_remote
end
@current_token
end
问题:不管之前有没有获取过,都会进入 get_auth_token 的第一个判断里,我输出发现是@current_token刷新页面都会变成未定义的。其中 AuthToken 是我自己添加文件写的一个类
class AuthToken
attr_accessor :access_token, :expires_in, :application,:begin_time
# 构造方法
def initialize(access_token, expires_in, application, begin_time)
@access_token = access_token
@expires_in = expires_in
@application = application
@begin_time = begin_time
end
# 判断token是否过期
def is_valid_token?
if !@access_token.empty? && (Time.now - @begin_time) < @expires_in
true
else
false
end
end
end