diff --git a/resources/static/dialog/resources/internal_api.js b/resources/static/dialog/resources/internal_api.js
index 6285f8cb788357cf7ac11f80b46b76d82f309840..3f0ceb8be5077f47826ece6a1b64ccb6a7e00feb 100644
--- a/resources/static/dialog/resources/internal_api.js
+++ b/resources/static/dialog/resources/internal_api.js
@@ -14,6 +14,17 @@
       storage = bid.Storage,
       moduleManager = bid.module;
 
+  // given an object containing an assertion, extract the assertion string,
+  // as the internal API is supposed to return a string assertion, not an
+  // object.  issue #1395
+
+  function assertionObjectToString(assertion) {
+    if (assertion !== null && typeof assertion === 'object' && assertion.assertion) {
+      assertion = assertion.assertion;
+    }
+    return assertion;
+  }
+
   /**
    * Set the persistent flag to true for an origin.
    * @method setPersistent
@@ -53,6 +64,7 @@
    */
   internal.get = function(origin, callback, options) {
     function complete(assertion) {
+      assertion = assertionObjectToString(assertion);
       // If no assertion, give no reason why there was a failure.
       callback && callback(assertion || null);
     }
@@ -90,7 +102,8 @@
    */
   function getSilent(origin, email, callback) {
     function complete(assertion) {
-      callback && callback(assertion);
+      assertion = assertionObjectToString(assertion);
+      callback && callback(assertion || null);
     }
 
     user.checkAuthenticationAndSync(function(authenticated) {