|
@@ -74,8 +74,8 @@ class AppToAppView(View):
|
|
|
}
|
|
|
return response.json(0, res)
|
|
|
|
|
|
- @staticmethod
|
|
|
- def account_link_with_amazon_authorization_code(user_id, request_dict, response):
|
|
|
+ @classmethod
|
|
|
+ def account_link_with_amazon_authorization_code(cls, user_id, request_dict, response):
|
|
|
amazon_authorization_code = request_dict.get('amazon_authorization_code', None)
|
|
|
if not amazon_authorization_code:
|
|
|
return response.json(444)
|
|
@@ -111,18 +111,7 @@ class AppToAppView(View):
|
|
|
amazon_refresh_token=amazon_refresh_token, create_time=now_time,
|
|
|
update_time=now_time)
|
|
|
|
|
|
- # 获取用户授权码
|
|
|
- url = redirect_uri + '/appToApp/oa2/getAuthCode'
|
|
|
- region_code = 'EU'
|
|
|
- if CONFIG_INFO != CONFIG_EUR:
|
|
|
- region_code = 'US'
|
|
|
- params = {
|
|
|
- 'user_id': user_id,
|
|
|
- 'region_code': region_code
|
|
|
- }
|
|
|
- r = requests.get(url=url, params=params, timeout=10)
|
|
|
- assert r.status_code == 200
|
|
|
- res = eval(r.content)
|
|
|
+ res = cls.get_auth_code_and_token(user_id)
|
|
|
user_authorization_code = res['res']['user_authorization_code']
|
|
|
data = {
|
|
|
"stage": LOOCAM_SKILL_STAGE,
|
|
@@ -242,8 +231,8 @@ class AppToAppView(View):
|
|
|
r = requests.delete(headers=headers, url=url, timeout=30)
|
|
|
return r
|
|
|
|
|
|
- @staticmethod
|
|
|
- def get_alexa_app_url(user_id, request_dict, response):
|
|
|
+ @classmethod
|
|
|
+ def get_alexa_app_url(cls, user_id, request_dict, response):
|
|
|
response_type = request_dict.get('response_type', None)
|
|
|
operate = request_dict.get('operate', None)
|
|
|
state = request_dict.get('state', None)
|
|
@@ -257,26 +246,18 @@ class AppToAppView(View):
|
|
|
|
|
|
if operate == 'accept':
|
|
|
redirect_uri += '&source=app'
|
|
|
+ res = cls.get_auth_code_and_token(user_id)
|
|
|
if response_type == 'code':
|
|
|
# 获取用户授权码
|
|
|
- base_url = 'https://{}'.format(ALEXA_DOMAIN)
|
|
|
- url = base_url + '/appToApp/oa2/getAuthCode'
|
|
|
- region_code = 'EU'
|
|
|
- if CONFIG_INFO != CONFIG_EUR:
|
|
|
- region_code = 'US'
|
|
|
- params = {
|
|
|
- 'user_id': user_id,
|
|
|
- 'region_code': region_code
|
|
|
- }
|
|
|
- r = requests.get(url=url, params=params, timeout=10)
|
|
|
- assert r.status_code == 200
|
|
|
- res = eval(r.content)
|
|
|
user_authorization_code = res['res']['user_authorization_code']
|
|
|
redirect_uri += '&code={}'.format(user_authorization_code)
|
|
|
elif response_type == 'token':
|
|
|
# 获取令牌
|
|
|
- pass
|
|
|
+ refresh_token = res['res']['refresh_token']
|
|
|
+ redirect_uri += '&token={}&token_type=Bearer&expiration_time=3600'.format(refresh_token)
|
|
|
+ AlexaOauth.objects.filter(user_id=user_id).update(link_status=1)
|
|
|
else:
|
|
|
+ AlexaOauth.objects.filter(user_id=user_id).update(link_status=0)
|
|
|
redirect_uri += '&error=access_denied&error_description=The%20user%20denied%20the%20request.%20'
|
|
|
|
|
|
res = {
|
|
@@ -285,3 +266,23 @@ class AppToAppView(View):
|
|
|
return response.json(0, res)
|
|
|
except Exception as e:
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_auth_code_and_token(user_id):
|
|
|
+ """
|
|
|
+ 请求Alexa项目接口获取验证码和令牌
|
|
|
+ @param user_id: 用户id
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ base_url = 'https://{}'.format(ALEXA_DOMAIN)
|
|
|
+ url = base_url + '/appToApp/oa2/getAuthCodeAndToken'
|
|
|
+ region_code = 'EU'
|
|
|
+ if CONFIG_INFO != CONFIG_EUR:
|
|
|
+ region_code = 'US'
|
|
|
+ params = {
|
|
|
+ 'user_id': user_id,
|
|
|
+ 'region_code': region_code
|
|
|
+ }
|
|
|
+ r = requests.get(url=url, params=params, timeout=10)
|
|
|
+ assert r.status_code == 200
|
|
|
+ return eval(r.content)
|