From d3609d4673d7afbd2457e6ba4bc6b0084c99a6c6 Mon Sep 17 00:00:00 2001 From: Dan Cunningham Date: Sat, 14 Oct 2023 10:05:47 -0700 Subject: [PATCH] Fixes broken authentication due to changes in the myq cloud api (#15755) Signed-off-by: Dan Cunningham --- .../binding/myq/internal/handler/MyQAccountHandler.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQAccountHandler.java b/bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQAccountHandler.java index 70902167fc6..5f362ffc4ea 100644 --- a/bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQAccountHandler.java +++ b/bundles/org.openhab.binding.myq/src/main/java/org/openhab/binding/myq/internal/handler/MyQAccountHandler.java @@ -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); @@ -493,6 +493,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());