2017-01-14 5 views
0

私は何か明白なものを紛失しているに違いありません。ベータAPI https://graph.microsoft.com/beta/invitations(APIの参照:https://graph.microsoft.io/en-us/docs/api-reference/beta/api/invitation_post)に投稿する場合は:{ "コード": "ないUnknownError"、 "メッセージ": ""、 "innerError"、私はUnknownError calling/beta/invitations

{ "エラー" を取得します:{ "要求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\": \"[email protected]\",\"inviteRedirectUrl\": \"https://MYWEBSITE.COM\"}", Encoding.UTF8, "application/json"); 

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

} 

ありがとう!私は他の/ベータコマンドをうまくやることができます。たとえば、https://graph.microsoft.com/beta/usersを取得すると、テナントのユーザーリストが期待どおりに返されます。

ログに基づいて-Dan

+0

あなたはJSONを期待することを伝えるためのContent-Typeヘッダ\tを送信している、ことができますか?この言語に慣れていないので、request.contentがそのエンコーディングとともにそれを設定しているかどうかはわかりません。 – bradenkeith

+0

"request.Content = new StringContent ....."を開始する行の最後にそこにあります。 – spalt

+0

同じリクエストをグラフエクスプローラで使用しようとすると、同じエラーか別のものが表示されますか?これは500エラーですか?私は誰かにトレースログを調べてエラーを理解するように頼んだ。 –

答えて

0

、あなたは、発信者がAPIを呼び出すために必要な権限を付与されていなかったことを意味401エラーレスポンスを受信して​​います。ここでの指針(https://graph.microsoft.io/en-us/docs/api-reference/beta/api/invitation_post)に従う必要があります。これは、Directory.ReadWrite.AllまたはUser.ReadWrite.Allが必要であることを示しています(ただし、後者がうまく動作していないか、現在利用可能ではありません)。

また、このエラーメッセージを修正するバグを提出しました(このことについて申し訳ありませんが、ここではもっとうまくやる必要があります)。

希望これは

+0

お返事ありがとうございました!権限は間違いなく問題でした。私はポータルで正しいアクセス許可を与えていたことが分かりましたが、私は「アクセス許可を与える」ボタンをクリックしていませんでした。 dur。もう一度。 – spalt

+0

ダン、記録のために、この招待マネージャーは実際にメールでユーザーを招待していませんが、正しいですか?実際にメールを送信するのは私どもの責任です。 – spalt

+0

nevermind、私は "sendInvitationMessage"への参照を見つけました: "true"は招待マネージャーのdocです。 invitation_postの文書にそのようなものがあるはずですが、私は何を知っていますか? – spalt

関連する問題