Microsoft graph api 未知错误呼叫/测试版/邀请

Microsoft graph api 未知错误呼叫/测试版/邀请,microsoft-graph-api,azure-api-apps,Microsoft Graph Api,Azure Api Apps,我一定错过了什么明显的东西。当发布到beta API(API参考:)时,我得到 { “错误”:{ “代码”:“未知错误”, “电文”:“, “内部错误”:{ “请求id”:“e41b0eab-c39c-4cf8-9034-341c81fc722c”, “日期”:“2017-01-14T19:26:55” } } } 这是我的密码: namespace ConsoleApplication1 { public class Program { static void

我一定错过了什么明显的东西。当发布到beta API(API参考:)时,我得到

{ “错误”:{ “代码”:“未知错误”, “电文”:“, “内部错误”:{ “请求id”:“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\": \"MYEMAIL@MYDOMAIN.COM\",\"inviteRedirectUrl\": \"https://MYWEBSITE.COM\"}", Encoding.UTF8, "application/json");

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

}
命名空间控制台应用程序1
{
公共课程
{
静态void Main(字符串[]参数)
{
GraphClient g=新的GraphClient();
WriteLine(g.SendPost(g.authContext,g.credential).Result);
}        
}
公共类GraphClient
{
公共认证上下文authContext;
公共客户端凭据;
公共图形客户端()
{
this.authContext=新的AuthenticationContext(“https://login.microsoftonline.com/MYTENANT.onmicrosoft.com");
this.credential=新的ClientCredential(“MYCLIENTID”、“MYCLIENTSECRET”);
}
公共异步任务SendPost(AuthenticationContext authContext、ClientCredential凭据)
{
AuthenticationResult=等待authContext.AcquireTokenAsync(“https://graph.microsoft.com“,凭证);
HttpClient http=新的HttpClient();
HttpRequestMessage请求=新建HttpRequestMessage(HttpMethod.Post)https://graph.microsoft.com/beta/invitations");
request.Headers.Authorization=新的AuthenticationHeaderValue(“承载者”,result.AccessToken);
request.Content=newstringcontent(“{\”invitedUserEmailAddress\”:\”MYEMAIL@MYDOMAIN.COM\“,\“邀请重定向URL\”:\”https://MYWEBSITE.COM\“}”,Encoding.UTF8,“application/json”);
HttpResponseMessage response=等待http.SendAsync(请求);
return wait response.Content.ReadAsStringAsync();
}
}
}
谢谢!我可以很好地执行其他/beta命令。例如,如预期的那样,获取将返回“我的租户”中的用户列表


-Dan根据日志,您将收到401错误响应,这意味着调用方未被授予调用API所需的权限。您需要遵循此处的指导:这表明您需要Directory.ReadWrite.All或User.ReadWrite.All(尽管我不确定后者是否有效或现在是否可用)

我们还提交了一个bug来修复这个错误消息(很抱歉,我们需要在这里做得更好)


希望这能有所帮助,

您是否发送内容类型头来告诉它需要json?不熟悉这种语言,因此不确定request.content是否会将其与编码一起设置。它位于以“request.content=new StringContent….”开头的行的最后。如果使用图形浏览器尝试相同的请求,是否会出现相同的错误或其他错误?这也是一个500错误吗?我请人查看跟踪日志以了解错误。感谢您的快速回复!权限绝对是个问题。原来我在门户中授予了正确的权限,但我没有单击“授予权限”按钮。杜尔。再次感谢。dan,请注意,此邀请管理器实际上并没有通过电子邮件邀请用户,对吗?我们有责任实际发送电子邮件?不管怎样,我在邀请函管理器文档中找到了“sendInvitationMessage”:“true”。看起来你应该在邀请函中有这个,但我知道什么:)这是提到过的,但它不在示例中,因为我们通常只显示所需属性的示例。sendInvitationMessage不是必需的属性。但是,请随时在GitHub上提交有关此问题的问题。