2016-07-20 22 views
2

Ich versuche, ein Wort hinzufügen, das zuerst auf eine Anmeldeseite nach dem ersten Laden und nach dem Anmelden Umleitungen zurück zum Add-in umleiten muss. Das Add-In wird auf einem eigenen Webserver gehostet. Nach der Umleitung bekomme ich jedoch einen Fehler, dass "Word nicht definiert ist". Das Add-In wird innerhalb von Word ausgeführt, und ich habe Aufrufe an Office.initialize und Word.run. Wenn ich das Add-In so ausführe, dass es auf localhost verweist, anstatt auf den Webserver für das Add-In, läuft es gut, aber wenn es vom Webserver ausgeführt wird, erhalte ich die Fehler. Hier"Word-Objekt ist undefiniert" in Office 2016-Add-In nach Login-Umleitung

ist, was mein Code wie für die Seite aussieht, der den Fehler bekommt:

(function() { 
"use strict"; 

Office.initialize = function (reason) { 
    $(document).ready(function() { 

     try { 
      doSomethingInWord(); 
     } catch (e) { 
      console.log(e); 
     } 
    } 
} 
})(); 

Meine „doSomethingInWord“ Funktion wie folgt aussieht:

function doSomethingInWord() { 
    Word.run(function (context) { 
     var body = context.document.body; 

     return context.sync() 
      .then(function() { 
        body.clear(); 
        return context.sync().then(function() { 
         console.log('Did Something in word'); 
        }) 
     }).catch(errorHandler); 
    } 
} 
+0

Das Ausführen eines Office.context.requirements.isSetSupported ('WordApi', 1.1) gibt True zurück. – ChosunOne

+0

Ok, dieser Fehler scheint nur dann zu passieren, wenn ich das Add-In von Visual Studio starte. Es nur in Worten zu laufen scheint ohne Probleme zu funktionieren. – ChosunOne

+0

Können Sie etwas mehr über diesen Login-Service beschreiben? Leitet es auf eine andere Seite um und komme dann auf diese zurück? Woher weiß es, zu diesem zurück zu kommen (Abfrage param vs. browser-back)? Wird der Dienst auf der gleichen Domäne ausgeführt? ... –

Antwort

0

Ich denke, das Problem Sie sehen Dies ist der Fall, wenn Sie auf einen Authentifizierungsdialog und zurück umleiten und Office.js nicht erneut auslösen.

Ich bin überrascht, dass Sie sagen, es funktioniert für Sie in Word ohne Visual Studio - ich weiß nicht, wie sie verwandt wären. Aber in beiden Fällen werden Sie in diesem Ablauf auf andere Probleme stoßen, insbesondere in Excel Online, wo das Add-In in einem iframe ausgeführt wird (und wo OAuth-Dialog nicht zulassen, in einem iframes zu sein).

Ich denke, Ihre beste Wette wäre, das Add-In "normal" zu laden und die Office.context.ui.displayDialogAsync API zu verwenden, um den OAuth-Login in einem separaten Dialog anzuzeigen. Lassen Sie Ihr Add-In während dieser Zeit "auf Dialogeingabe für die Anmeldung warten" warten. Wenn die OAuth-Anmeldung abgeschlossen ist, senden Sie die Dialognachricht an die übergeordnete Nachricht zurück und geben alle erforderlichen Informationen (Token oder whatnot) weiter.

+0

Scheint wie die Funktion zum Anzeigen von Dialogen heißt jetzt "displayDialogAsync" - [Office Dev] (http://dev.office.com/reference/add-ins/shared/officeui.displaydialogasync) – ChosunOne

+0

Ich schrieb es aus dem Speicher. .. ja, ich meinte displayDialogAsync. Danke für die Bearbeitung. –

+0

Gibt es eine Möglichkeit, Model an den Dialog zu übergeben? –