|
@@ -71,7 +71,7 @@ class deviceStatus(TemplateView):
|
|
|
|
|
|
logger = logging.getLogger('django')
|
|
|
logger.info('--------认证登录,地区: {}, skill: {}--------'.format(alexa_region, skill_name))
|
|
|
-
|
|
|
+
|
|
|
alexAuth = AlexaAuthModel.objects.filter(token=token)
|
|
|
nowTime = int(time.time())
|
|
|
if not alexAuth.exists():
|
|
@@ -166,7 +166,7 @@ class deviceStatus(TemplateView):
|
|
|
api_uri = ALEXA_EVENT_API[alexa_region]
|
|
|
messageId = str(uuid.uuid4()).strip()
|
|
|
bearer_access_token = "Bearer {access_token}".format(access_token=access_token)
|
|
|
- headers = {"content-type": "application/json", "Authorization": bearer_access_token}
|
|
|
+ headers = {"content-type": "application/json", "Authorization": bearer_access_token}
|
|
|
payload_json = {
|
|
|
"event": {
|
|
|
"header": {
|
|
@@ -236,11 +236,12 @@ class deviceStatus(TemplateView):
|
|
|
|
|
|
# 获取alexa授权信息
|
|
|
alexAuth = AlexaAuthModel.objects.filter(userID=userID).\
|
|
|
- values('expiresTime', 'access_token', 'refresh_token', 'alexa_region')
|
|
|
+ values('expiresTime', 'access_token', 'refresh_token', 'alexa_region', 'skill_name')
|
|
|
if not alexAuth.exists():
|
|
|
logger.info('UID为 {} 的用户不存在'.format(UID))
|
|
|
return JsonResponse({'code': 102, 'msg': 'not found user'})
|
|
|
-
|
|
|
+
|
|
|
+ skill_name = alexAuth[0]['skill_name']
|
|
|
expiresTime = alexAuth[0]['expiresTime']
|
|
|
access_token = alexAuth[0]['access_token']
|
|
|
refresh_token = alexAuth[0]['refresh_token']
|
|
@@ -253,7 +254,7 @@ class deviceStatus(TemplateView):
|
|
|
now_time = int(time.time())
|
|
|
if now_time > expiresTime:
|
|
|
logger.info(refresh_token)
|
|
|
- res = self.getRefreshToken(refresh_token)
|
|
|
+ res = self.getRefreshToken(refresh_token, skill_name)
|
|
|
logger.info(res)
|
|
|
if 'error' not in res:
|
|
|
alexAuth.update(
|
|
@@ -372,11 +373,12 @@ class deviceStatus(TemplateView):
|
|
|
|
|
|
try:
|
|
|
alexAuth = AlexaAuthModel.objects.filter(userID=userID).\
|
|
|
- values('expiresTime', 'refresh_token', 'access_token', 'alexa_region')
|
|
|
+ values('expiresTime', 'refresh_token', 'access_token', 'alexa_region', 'skill_name')
|
|
|
if not alexAuth.exists():
|
|
|
logger.info('UID为 {} 的用户不存在'.format(UID))
|
|
|
return JsonResponse({'code': 102, 'msg': 'not found user'})
|
|
|
|
|
|
+ skill_name = alexAuth[0]['skill_name']
|
|
|
expiresTime = alexAuth[0]['expiresTime']
|
|
|
refresh_token = alexAuth[0]['refresh_token']
|
|
|
access_token = alexAuth[0]['access_token']
|
|
@@ -387,7 +389,7 @@ class deviceStatus(TemplateView):
|
|
|
|
|
|
now_time = int(time.time())
|
|
|
if now_time > expiresTime:
|
|
|
- res = self.getRefreshToken(refresh_token)
|
|
|
+ res = self.getRefreshToken(refresh_token, skill_name)
|
|
|
if 'error' not in res:
|
|
|
alexAuth.update(
|
|
|
access_token=res['access_token'],
|
|
@@ -440,19 +442,27 @@ class deviceStatus(TemplateView):
|
|
|
logger.info('--------删除设备异常--------: {}'.format(repr(e)))
|
|
|
|
|
|
|
|
|
- def getRefreshToken(self,refresh_token):
|
|
|
+ def getRefreshToken(self, refresh_token, skill_name):
|
|
|
+ # 请求更新token
|
|
|
+ logger = logging.getLogger('django')
|
|
|
+ logger.info('--------{}请求更新token--------'.format(skill_name))
|
|
|
+
|
|
|
+ if skill_name not in CLIENT_CONFIG.keys():
|
|
|
+ logger.info('--------技能名称错误,skill_name: {}--------'.format(skill_name))
|
|
|
+ return JsonResponse({'code': 111, 'msg': 'skill_name error'})
|
|
|
+
|
|
|
payload = {
|
|
|
'grant_type': 'refresh_token',
|
|
|
'refresh_token': refresh_token,
|
|
|
- 'client_id': 'amzn1.application-oa2-client.efb07b51dd444f848b6f0598635da3cc',
|
|
|
- 'client_secret': '8a49390ebe362bfee153be87587f5673d0c1d8aeb6bc1ef736fda6c9d5d81c8f',
|
|
|
+ 'client_id': CLIENT_CONFIG[skill_name]['client_id'],
|
|
|
+ 'client_secret': CLIENT_CONFIG[skill_name]['client_secret'],
|
|
|
}
|
|
|
auth_request_url = 'https://api.amazon.com/auth/o2/token'
|
|
|
headers = {
|
|
|
'content-type': "application/x-www-form-urlencoded",
|
|
|
'cache-control': "no-cache"
|
|
|
}
|
|
|
- res = requests.post(auth_request_url, payload,headers)
|
|
|
+ res = requests.post(auth_request_url, payload, headers)
|
|
|
request_json = res.json()
|
|
|
return request_json
|
|
|
|