浏览代码

配置变量

locky 1 年之前
父节点
当前提交
6a74d2e4ba
共有 1 个文件被更改,包括 29 次插入21 次删除
  1. 29 21
      Controller/alexa/AlexaController.py

+ 29 - 21
Controller/alexa/AlexaController.py

@@ -12,6 +12,19 @@ from Object.TokenObject import TokenObject
 from Ansjer.config import CONFIG_INFO, CONFIG_EUR
 
 
+# 域名
+ALEXA_DOMAIN = 'smart.loocam2.com'
+AMAZON_API_DOMAIN = 'api.amazon.com'
+
+# Alexa loocam skill配置信息
+# https://developer.amazon.com/alexa/console/ask
+LOOCAM_SKILL_STAGE = 'development'    # 开发中: development, 已上线: live
+LOOCAM_SKILL_ASIN = 'B0C94Q7H1L'
+LOOCAM_SKILL_ID = 'amzn1.ask.skill.ff5a5074-7ec7-442b-979b-cb57095f7a94'
+LOOCAM_CLIENT_ID = 'amzn1.application-oa2-client.98a01914518743e481d51115144dafb0',
+LOOCAM_CLIENT_SECRET = '43353cac67670aefd64a5f95309754ddd6bcfe8a087cc3cad1348b626f64b132'
+
+
 class AppToAppView(View):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
@@ -44,16 +57,15 @@ class AppToAppView(View):
 
     @staticmethod
     def get_alexa_app_url_and_lwa_fallback_url(response):
-        client_id = 'amzn1.application-oa2-client.98a01914518743e481d51115144dafb0'     # Alexa Client Id
-        skill_stage = 'development'    # 开发中: development, 已上线: live
+        skill_stage = LOOCAM_SKILL_STAGE
         redirect_uri = 'https://smart.loocam2.com'
         alexa_app_url = 'https://alexa.amazon.com/spa/skill-account-linking-consent?' \
                         'fragment=skill-account-linking-consent&client_id={}&' \
                         'scope=alexa::skills:account_linking&skill_stage={}&response_type=code&' \
-                        'redirect_uri={}'.format(client_id, skill_stage, redirect_uri)
+                        'redirect_uri={}'.format(LOOCAM_CLIENT_ID, skill_stage, redirect_uri)
         lwa_fallback_url = 'https://www.amazon.com/ap/oa?' \
             'client_id={}&scope=alexa::skills:account_linking&response_type=code&redirect_uri={}&'.\
-            format(client_id, redirect_uri)
+            format(LOOCAM_CLIENT_ID, redirect_uri)
         res = {
             'alexa_app_url': alexa_app_url,
             'lwa_fallback_url': lwa_fallback_url
@@ -69,14 +81,13 @@ class AppToAppView(View):
         now_time = int(time.time())
         # 获取亚马逊访问令牌
         # https://developer.amazon.com/zh/docs/login-with-amazon/authorization-code-grant.html#access-token-request
-        amazon_base_uri = 'https://api.amazon.com'
-        url = amazon_base_uri + '/auth/o2/token'
-        redirect_uri = 'https://smart.loocam2.com'
+        url = 'https://{}/auth/o2/token'.format(AMAZON_API_DOMAIN)
+        redirect_uri = 'https://{}'.format(ALEXA_DOMAIN)
         data = {
             'grant_type': 'authorization_code',
             'code': amazon_authorization_code,
-            'client_id': 'amzn1.application-oa2-client.98a01914518743e481d51115144dafb0',
-            'client_secret': '43353cac67670aefd64a5f95309754ddd6bcfe8a087cc3cad1348b626f64b132',
+            'client_id': LOOCAM_CLIENT_ID,
+            'client_secret': LOOCAM_CLIENT_SECRET,
             'redirect_uri': redirect_uri
         }
         try:
@@ -112,7 +123,7 @@ class AppToAppView(View):
             res = eval(r.content)
             user_authorization_code = res['res']['user_authorization_code']
             data = {
-                "stage": "development",
+                "stage": LOOCAM_SKILL_STAGE,
                 "accountLinkRequest": {
                     "redirectUri": redirect_uri,
                     "authCode": user_authorization_code,
@@ -127,9 +138,8 @@ class AppToAppView(View):
                 'Authorization': 'Bearer {}'.format(amazon_access_token)
             }
             alexa_api_endpoint_list = ['api.amazonalexa.com', 'api.eu.amazonalexa.com', 'api.fe.amazonalexa.com']
-            skill_id = 'amzn1.ask.skill.ff5a5074-7ec7-442b-979b-cb57095f7a94'
             for alexa_api_endpoint in alexa_api_endpoint_list:
-                url = 'https://{}/v1/users/~current/skills/{}/enablement'.format(alexa_api_endpoint, skill_id)
+                url = 'https://{}/v1/users/~current/skills/{}/enablement'.format(alexa_api_endpoint, LOOCAM_SKILL_ID)
                 r = requests.post(headers=headers, url=url, json=data, timeout=30)
                 if r.status_code == 201:
                     AlexaOauth.objects.filter(user_id=user_id).\
@@ -180,9 +190,8 @@ class AppToAppView(View):
 
     @staticmethod
     def get_skill_page_url(response):
-        skill_asin = 'B0C94Q7H1L'
-        skill_page_url = 'https://alexa.amazon.com/spa/index.html#skills/dp/{}'.format(skill_asin)
-        lwa_page_url = 'https://www.amazon.com/dp/{}'.format(skill_asin)
+        skill_page_url = 'https://alexa.amazon.com/spa/index.html#skills/dp/{}'.format(LOOCAM_SKILL_ASIN)
+        lwa_page_url = 'https://www.amazon.com/dp/{}'.format(LOOCAM_SKILL_ASIN)
         res = {
             'skill_page_url': skill_page_url,
             'lwa_page_url': lwa_page_url
@@ -202,13 +211,12 @@ class AppToAppView(View):
         alexa_api_endpoint = alexa_oauth_qs[0]['alexa_api_endpoint']
         amazon_refresh_token = alexa_oauth_qs[0]['amazon_refresh_token']
 
-        amazon_base_uri = 'https://api.amazon.com'
-        url = amazon_base_uri + '/auth/o2/token'
+        url = 'https://{}/auth/o2/token'.format(AMAZON_API_DOMAIN)
         data = {
             'grant_type': 'refresh_token',
             'refresh_token': amazon_refresh_token,
-            'client_id': 'amzn1.application-oa2-client.98a01914518743e481d51115144dafb0',
-            'client_secret': '43353cac67670aefd64a5f95309754ddd6bcfe8a087cc3cad1348b626f64b132'
+            'client_id': LOOCAM_CLIENT_ID,
+            'client_secret': LOOCAM_CLIENT_SECRET
         }
         r = requests.post(url=url, data=data, timeout=10)
         assert r.status_code == 200
@@ -224,8 +232,8 @@ class AppToAppView(View):
             'Content-Type': 'application/json',
             'Authorization': 'Bearer {}'.format(new_access_token)
         }
-        skill_id = 'amzn1.ask.skill.ff5a5074-7ec7-442b-979b-cb57095f7a94'
-        url = 'https://{}/v1/users/~current/skills/{}/enablement'.format(alexa_api_endpoint, skill_id)
+
+        url = 'https://{}/v1/users/~current/skills/{}/enablement'.format(alexa_api_endpoint, LOOCAM_SKILL_ID)
         if request_method == 'get':
             r = requests.get(headers=headers, url=url, timeout=30)
         elif request_method == 'delete':