]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fixes broken authentication due to changes in the myq cloud api (#15755)
authorDan Cunningham <dan@digitaldan.com>
Sat, 14 Oct 2023 17:05:47 +0000 (10:05 -0700)
committerGitHub <noreply@github.com>
Sat, 14 Oct 2023 17:05:47 +0000 (19:05 +0200)
Signed-off-by: Dan Cunningham <dan@digitaldan.com>
bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQAccountHandler.java

index c850d15fad88675fae18a7cf6616a5bb3300f008..bd3b095b9d5a9a7ac2b64556b3499c032667d917 100644 (file)
@@ -96,8 +96,8 @@ public class MyQAccountHandler extends BaseBridgeHandler implements AccessTokenR
      * MyQ oAuth relate fields
      */
     private static final String CLIENT_SECRET = "VUQ0RFhuS3lQV3EyNUJTdw==";
-    private static final String CLIENT_ID = "IOS_CGI_MYQ";
-    private static final String REDIRECT_URI = "com.myqops://ios";
+    private static final String CLIENT_ID = "ANDROID_CGI_MYQ";
+    private static final String REDIRECT_URI = "com.myqops://android";
     private static final String SCOPE = "MyQ_Residential offline_access";
     /*
      * MyQ authentication API endpoints
@@ -151,7 +151,7 @@ public class MyQAccountHandler extends BaseBridgeHandler implements AccessTokenR
         username = config.username;
         password = config.password;
         // MyQ can get picky about blocking user agents apparently
-        userAgent = MyQAccountHandler.randomString(20);
+        userAgent = ""; // no agent string
         needsLogin = true;
         updateStatus(ThingStatus.UNKNOWN);
         restartPolls(false);
@@ -491,6 +491,9 @@ public class MyQAccountHandler extends BaseBridgeHandler implements AccessTokenR
                     .param("response_type", "code") //
                     .param("scope", SCOPE) //
                     .agent(userAgent).followRedirects(true);
+            request.header("Accept", "\"*/*\"");
+            request.header("Authorization",
+                    "Basic " + Base64.getEncoder().encodeToString((CLIENT_ID + ":").getBytes()));
             logger.debug("Sending {} to {}", request.getMethod(), request.getURI());
             ContentResponse response = request.send();
             logger.debug("Login Code {} Response {}", response.getStatus(), response.getContentAsString());