2017-01-14 13 views
0

Мне, должно быть, не хватает чего-то очевидного. При размещении в бета API https://graph.microsoft.com/beta/invitations (API исх: https://graph.microsoft.io/en-us/docs/api-reference/beta/api/invitation_post), я получаюUnknownError call/beta/invites

{ "ошибка": { "код": "UnknownError", "сообщение" : "", "innerError" : { "запрос-идентификатор": "e41b0eab-c39c-4cf8-9034-341c81fc722c", "дата": "2017-01-14T19: 26: 55" }} }

Вот мой код:

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      GraphClient g = new GraphClient(); 
      Console.WriteLine(g.SendPost(g.authContext, g.credential).Result); 
     }   
    } 

    public class GraphClient 
    { 
     public AuthenticationContext authContext; 
     public ClientCredential credential; 
     public GraphClient() 
     { 
      this.authContext = new AuthenticationContext("https://login.microsoftonline.com/MYTENANT.onmicrosoft.com"); 
      this.credential = new ClientCredential("MYCLIENTID", "MYCLIENTSECRET"); 
     } 
     public async Task<string> SendPost(AuthenticationContext authContext, ClientCredential credential) 
     { 
      AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.microsoft.com", credential); 

      HttpClient http = new HttpClient(); 
      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/beta/invitations"); 
      request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); 
      request.Content = new StringContent("{\"invitedUserEmailAddress\": \"MYE[email protected]\",\"inviteRedirectUrl\": \"https://MYWEBSITE.COM\"}", Encoding.UTF8, "application/json"); 

      HttpResponseMessage response = await http.SendAsync(request); 
      return await response.Content.ReadAsStringAsync(); 
     } 
    } 

} 

Спасибо! Я могу делать другие/бета-команды просто отлично. Например, GETting https://graph.microsoft.com/beta/users возвращает список пользователей в моем арендаторе, как и ожидалось.

Дана

+0

Вы посылая Content-Type \t заголовка, чтобы сказать это ожидать JSON? Не знаком с этим языком, поэтому не уверен, что request.content устанавливает это вместе с его кодировкой. – bradenkeith

+0

он находится в самом конце строки, которая запускает «request.Content = new StringContent .....» – spalt

+0

Если вы попробуете тот же запрос с помощью Graph Explorer, вы получите ту же ошибку или что-то другое? Также это 500 ошибка? Я попросил кого-то просмотреть журналы трасс, чтобы понять ошибку. –

ответ

0

Основываясь на бревнах, вы получаете ответ на 401 об ошибке, это означает, что абонент не получил необходимые разрешения для вызова API. Вам нужно будет следовать инструкциям здесь: https://graph.microsoft.io/en-us/docs/api-reference/beta/api/invitation_post, который указывает, что вам нужен Directory.ReadWrite.All или User.ReadWrite.All (хотя я не уверен, что последний работает или доступен прямо сейчас).

Мы также подали ошибку, чтобы исправить это сообщение об ошибке (извините за это - нам здесь нужно сделать намного лучше).

Надеется, что это помогает,

+0

за быстрый ответ! разрешения были определенно проблемой. оказывается, я предоставил правильное разрешение на портале, но я не нажал кнопку «Разрешения на грант». дур. thx снова. – spalt

+0

dan, для записи, этот менеджер приглашений фактически не приглашает пользователя по электронной почте, правильно? Мы несем ответственность за отправку электронной почты? – spalt

+0

nevermind, я нашел ссылку на «sendInvitationMessage»: «true» в doc приглашения. похоже, что вы должны иметь это в документе invite_post, но что я знаю :) – spalt