定制 get_global_access_token

微信接口调用中有一个 access token,它是一个全局 token,为把它与 OAuth 中的 code 换取的 access token 区别开我们称之为 global access token。定制 get_global_access_token 函数在分布式系统中显得十分必要,因为每次调用接口都会使之前获得的 global access token 过期,只有最后一次调用接口时获取到的 global access token 是有效的。

定制说明

你可以参考官方 get_global_access_token 的源码进行定制。

def official_get_global_access_token(self):
"""
    Get global access token.
    :param self: Call self.get_global_access_token() for get global access token.
    :return: :str: Global access token
    """
if not self.global_access_token or self.global_access_token['expires_at'] <= int(time.time()):
self.global_access_token = self.get_global_access_token()
self.global_access_token['expires_at'] += int(time.time()) - 180
return self.global_access_token['access_token']

每当需要获取 global access token 时,都会调用此函数,函数需要返回一个可用的 global access token,当你需要自定义时,你应当把 global access token 以及过期时间存入数据库中,函数每次被调用时应当先检查是否过期,如果过期则调用 self.get_global_access_token() 重新获取 global access token 。

self.get_global_access_token() 返回一个字典,字典内包含 access_token 及 expires_in:

access_token:global access token
expires_in:有效时间,单位为秒,为了保证调用的可靠性,我们建议在有效时间的基础上减去 180 秒