diff --git a/classes/login/GmsClient.php b/classes/login/GmsClient.php
index 7efacb18302a5acd025482f1ffd744035b076bb0..0c3c4e895c4b7b5ff6dcc8d3ab09cd1b1009e0d5 100644
--- a/classes/login/GmsClient.php
+++ b/classes/login/GmsClient.php
@@ -36,7 +36,13 @@ class GmsClient {
         $info = curl_getinfo($conn);
 
         if ($info['http_code'] === 200) {
+            error_log($response);
+            $joinResult = json_decode($response);
             curl_close($conn);
+            if (!array_key_exists('mergedId', $joinResult)) {
+                throw new ServerErrorException('GMS join response has an invalid payload');
+            }
+            return $joinResult->mergedId;
         } else {
             //show information regarding the error
             curl_close($conn);
@@ -47,9 +53,6 @@ class GmsClient {
             }
             throw new ServerErrorException('Error: GMS response code: ' . $httpCode);
         }
-        
-        // TODO: return id extracted from GMS response
-        return $userId1;
     }
 
     private function getJoinAccessToken(int $userId1, int $userId2): string {