Javascript conversationId-值可以';不能为空
总之,addin我正试图在ADAL和microsoft.graph的帮助下从AAD获取数据。代码如下: 来自app.jsJavascript conversationId-值可以';不能为空,javascript,microsoft-graph-api,office-js,office-addins,Javascript,Microsoft Graph Api,Office Js,Office Addins,总之,addin我正试图在ADAL和microsoft.graph的帮助下从AAD获取数据。代码如下: 来自app.js var app = (function () { "use strict"; window.config = { instance: 'https://login.microsoftonline.com/', tenant: '<TENANT>', clientId: '<CLIENTID>', redirectUri: '<THE-APP-A
var app = (function () {
"use strict";
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: '<TENANT>',
clientId: '<CLIENTID>',
redirectUri: '<THE-APP-ADDRESS>',
postLogoutRedirectUri: window.location.origin,
endpoints: {
officeGraph: 'https://graph.microsoft.com',
},
callback: userSignedIn,
popUp: true,
cacheLocation: 'localStorage'
};
function signIn() {
authContext.login();
}
function userSignedIn(err, token) {
console.log('userSignedIn called');
// showWelcomeMessage();
if (!err) {
console.log("token: " + token);
showWelcomeMessage();
}
else {
console.error("error: " + err);
}
}
function showWelcomeMessage() {
var authContext = new AuthenticationContext(config);
var $userDisplay = $(".app-user");
var $signInButton = $(".app-login");
var $signOutButton = $(".app-logout");
// Check For & Handle Redirect From AAD After Login
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
if (isCallback && !authContext.getLoginError()) {
window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);
}
var-app=(函数(){
“严格使用”;
window.config={
实例:'https://login.microsoftonline.com/',
租户:'',
客户端ID:“”,
重定向URI:“”,
postLogoutRedirectUri:window.location.origin,
端点:{
办公室图表:'https://graph.microsoft.com',
},
回调:userSignedIn,
是的,
cacheLocation:“本地存储”
};
函数签名(){
authContext.login();
}
函数userSignedIn(错误,令牌){
log('userSignedIn called');
//showWelcomeMessage();
如果(!err){
console.log(“令牌:+token”);
showWelcomeMessage();
}
否则{
控制台错误(“错误:+err”);
}
}
函数showWelcomeMessage(){
var authContext=新的AuthenticationContext(配置);
var$userDisplay=$(“.app user”);
变量$signInButton=$(“.app login”);
var$signburgatton=$(“.app logout”);
//登录后检查并处理来自AAD的重定向(&D)
var isCallback=authContext.isCallback(window.location.hash);
authContext.HandleIndowCallback();
if(isCallback&!authContext.getLoginError()){
window.location=authContext.\u getItem(authContext.CONSTANTS.STORAGE.LOGIN\u请求);
}
和main.js
function getDataFromSelection() {
var baseEndpoint = 'https://graph.microsoft.com';
var authContext = new AuthenticationContext(config);
Office.context.document.getSelectedDataAsync(Office.CoercionType.Text,
function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
authContext.acquireToken(baseEndpoint, function (error, token) {
if (error || !token) {
app.showNotification("Ingen token: ", "Du får logga in igen." + error); // + error
}
//var email = authContext._user.userName;
var url = "https://graph.microsoft.com/v1.0/" + config.tenant + "/me";
var html = "<ul>";
$.ajax({
beforeSend: function (request) {
request.setRequestHeader("Accept", "application/json");
},
type: "GET",
url: url,
dataType: "json",
headers: {
'Authorization': 'Bearer ' + token,
}
}).done(function (response) {
html += getPropertyHtml("Namn", response.displayName);
html += getPropertyHtml("Titel", response.jobTitle);
html += getPropertyHtml("Avdelning", response.officeLocation);
html += getPropertyHtml("Telefon jobb", response.businessPhones);
$("#results").html(html);
return postDataToContentControlers(response);
}).fail(function (response) {
// app.showNotification('Inloggningen slutade att fungera!', 'Du får logga ut och prova att logga in igen'); //response.responseText
}).always(function () {
console.log("AJAX is done!!")
})
});
} else {
app.showNotification('Error:', 'Något gick fel. Du får logga in igen.'); //result.error.message
}
}
);
}
函数getDataFromSelection(){
var baseEndpointhttps://graph.microsoft.com';
var authContext=新的AuthenticationContext(配置);
Office.context.document.getSelectedDataAsync(Office.胁迫类型.Text,
函数(异步结果){
if(asyncResult.status==Office.AsyncResultStatus.successed){
acquireToken(baseEndpoint,函数(错误,标记){
如果(错误| |!标记){
app.showNotification(“Ingen令牌:,“igen中的Du får logga.”错误);//+错误
}
//var email=authContext.\u user.userName;
变量url=”https://graph.microsoft.com/v1.0/“+config.tenant+”/me”;
var html=“- ”;
$.ajax({
发送前:功能(请求){
setRequestHeader(“接受”、“应用程序/json”);
},
键入:“获取”,
url:url,
数据类型:“json”,
标题:{
“授权”:“持票人”+代币,
}
}).完成(功能(响应){
html+=getPropertyHtml(“Namn”,response.displayName);
html+=getPropertyHtml(“Titel”,response.jobTitle);
html+=getPropertyHtml(“Avdelning”,response.officeLocation);
html+=getPropertyHtml(“Telefon-jobb”,response.businessPhones);
$(“#结果”).html(html);
返回PostDatatoContentControllers(响应);
}).失败(功能(响应){
//app.showNotification('Inloggningen slutade att fungera!','Du får logga ut och prova att logga in igen');//response.responseText
}).always(函数(){
log(“AJAX完成了!!”)
})
});
}否则{
app.showNotification('Error:','Något gick fel.Du får logga in igen.');//result.Error.message
}
}
);
}
在本地wordklient上,它可以工作,但在Word online上(Office 365 Pro Plus v.1609)
我是在运行函数getDataFromSelection()时得到的
在我登录并得到确认和令牌之前:
当您使用microsoft graph获取邮件消息时,会处理参数ConversationId。每封邮件都有一个ConversationId…为什么它会抱怨关于GET-Again的问题
有人知道如何绕过这个问题,或者给我指出正确的方向吗?谢谢=)
编辑:我忘了提到这在Google Chrome上可以在线使用,但在Microsoft Edge上,在获取任何数据之前,弹出窗口在登录方面根本不起作用。只需再次弹出外接程序。如果您希望将图形合并到外接程序中,我建议您查看。它目前正在预览中,但长期来看,这绝对是你想结束吗。谢谢Marc=)我一直在检查它,它看起来很棒=)。你知道它需要多长时间才能过去预览吗?没有任何答案和建议,我现在正在试用office js helpers,配置似乎更简单。我遇到了一些问题。我将为此写一个新问题。如果你如果您希望将图表合并到外接程序中,我建议您查看。它目前正在预览中,但长期来看,这绝对是您想要结束的地方。谢谢Marc=)我一直在检查它,它看起来很棒=)。您知道它需要多长时间才能完成过去的预览?嗯,没有任何答案和建议,我现在正在尝试office js助手和艰难的配置似乎更简单,我遇到了一些问题。我将为此写一个新问题。