--- a/src/mediaserver/cdplugins/tidal/tidal-app.py
+++ b/src/mediaserver/cdplugins/tidal/tidal-app.py
@@ -50,7 +50,7 @@
 
 tidalidprefix = '0$tidal$'
 
-def maybelogin():
+def maybelogin(a={}):
     global session
     global quality
     global httphp
@@ -71,14 +71,17 @@
     pathprefix = os.environ["UPMPD_PATHPREFIX"]
     if "UPMPD_CONFIG" not in os.environ:
         raise Exception("No UPMPD_CONFIG in environment")
+
     upconfig = conftree.ConfSimple(os.environ["UPMPD_CONFIG"])
-    
-    username = upconfig.get('tidaluser')
-    password = upconfig.get('tidalpass')
-    qalstr = upconfig.get('tidalquality')
+    if 'user' in a:
+        username = a['user']
+        password = a['password']
+    else:
+        username, password = getserviceuserpass(upconfig, 'tidal')
     if not username or not password:
         raise Exception("tidaluser and/or tidalpass not set in configuration")
 
+    qalstr = upconfig.get('tidalquality')
     if qalstr == 'lossless':
         quality = Quality.lossless
     elif qalstr == 'high':
@@ -107,6 +110,14 @@
         return ('audio/mpeg', str(320))
     else:
         return ('audio/mpeg', str(96))
+
+# This is not used by the media server. It's for use by the OpenHome
+# Credentials service
+@dispatcher.record('login')
+def login(a):
+    maybelogin(a)
+    session_id, country_code = session.get_token_and_country()
+    return {'token' : session_id, 'country' : country_code}
 
 @dispatcher.record('trackuri')
 def trackuri(a):