2016-07-26 11 views
-1

Office 365のアクセストークンを取得できます。このトークンをヘッダーに添付してREST要求(GET)を行うことはできません。Asp.net C#でREST GETを行う方法?

私はこのコードを使用しています:

RestClient client = new RestClient(); 
client.EndPoint = @"https://outlook.office365.com/api/v1.0/me/folders/inbox/messages?$top=10"; 
client.Method = HttpVerb.GET; 
client.ContentType = "application/json"; 
client.PostData = "authorization: Bearer " + myAccesToken.ToString(); 
String json = client.MakeRequest(); 

を私はhttp://jwt.calebb.netにアクセストークンをテストしてみた、それは大丈夫です。

しかし、それは常に戻っています:

The remote server returned an error: (400) Bad Request.

は、私は一種残りの部分にknewbyだと私の英語は申し訳ありません...良いことではありません! :)

(RE)EDIT

私はRestSharpで試したと私は少し私のコードを簡略化してきました...今

は私がGETを作るために私のアクセストークンを使用しています要求。

リクエストに「許可ベアラー」を追加するにはどうすればよいですか?

このような感じですか?

//Ask for the token 
var client = new RestClient("https://login.windows.net/common/oauth2/token"); 

var request = new RestRequest(Method.POST); 
request.AddParameter("grant_type", "authorization_code"); 
request.AddParameter("code", Request.QueryString["code"]); 
request.AddParameter("redirect_uri", myRedirectUri); 
request.AddParameter("client_id", myClientID); 
request.AddParameter("client_secret", myClientSecret); 

IRestResponse response = client.Execute(request); 
string content = "[" + response.Content + "]"; 

DataTable dadosToken = (DataTable)JsonConvert.DeserializeObject<DataTable>(content); 
//I don't need a DataTable, but it was a way to retrieve my access token... :) 

//Ask for info with the access token 
var client2 = new RestClient("https://outlook.office365.com/api/v1.0/me"); 

var request2 = new RestRequest(Method.GET); 
request2.AddHeader("authorization", myToken.ToString()); 
//I've tried this way also: 
//client2.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(dadosToken.Rows[0]["access_token"].ToString(), "Bearer"); 

IRestResponse response2 = client2.Execute(request2); 
string content2 = "[" + response2.Content + "]"; 

Response.Write(content2); //this returns NOTHING! 

もう一度おねがいします!

+0

[Postman](https://www.getpostman.com/)のようなものでこのリクエストを試すと、サービスから何か情報が戻ってきますか?あなたが[400](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error)を取得している詳細な理由のように? –

+0

おそらく私は間違った方法を使用していますか?いいえ?より簡単に、より良い結果を生み出すことができるライブラリがありますか? – user3330412

+0

あなたは '$'サインインアドレスが必要ですか? – MKasprzyk

答えて

0

最初に確認すること:悪い要求ですか?これは、通常、メソッドが見つからないか、または指定されたパラメータを見つけることができないことを意味します。デプロイメントを確認し、最新のバージョンであることを確認し、サーバーが実際に動作していることを確認します。

0

また、Fiddlerを使用して、要求が整形式であるかどうかを判断することもできます。 より簡単なエンドポイントを最初に試してみてください:https://outlook.office365.com/api/v1.0/me 正しいデータが戻ってくるかどうか確認してください。ブラウザからこのエンドポイントを呼び出すだけでなく、Fiddler内のリクエスト/応答を見ることもできます。

関連する問題