2017-01-27 7 views
1

Postmanを使用してAuth0 APIにベアラトークンを送信しようとしました。OAuthトークンを送信するとPostmanで動作しますが、RestSharpでは機能しません

私はRestSharp(C#で)を使って同じことを試みましたが、全く動作しません。

以下は私のコードです。私は多くの異なるフォーマットを試しましたが、どれも動作しません。それを動作させるために他の方法がありますか?

var client = new RestClient("http://domain.auth0.com/api/v2/users"); 

RestRequest request = new RestRequest(Method.GET); 
//request.AddHeader("authorization", "Bearer eyJhbGcJ9.eyJhdWQiOiJ6VU4hVWUE2.token"); 
//request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); 
//request.AddHeader("Accept", "application/json"); 


//RestClient client = new RestClient("http://domain.auth0.com"); 
//RestRequest request = new RestRequest("api/v2/users", Method.GET); 

request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); 
request.AddHeader("Accept", "application/json"); 
request.AddParameter("Authorization", 
string.Format("Bearer " + "eyJhbGciOI1NiIsI9.eyJhdWQiOiWmVhTWpD2VycyI6eyJhY.token"), 
      ParameterType.HttpHeader); 

//request.AddParameter("Authorization", 
// String.Format("Bearer {0}", token), 
//ParameterType.HttpHeader); 
var response = client.Execute(request); 

PS:トークンが変更されました。

+0

感謝を私の質問を編集するためのあなた! :-) –

答えて

1

問題は、あなたがHTTP URLを使用していることです。最初のリクエストを発行すると、トークンが含まれますが、HTTPSエンドポイントを呼び出す必要があることを知らせるリダイレクト応答を受け取ります。

RestSharpは最初のリダイレクト応答のために自動的に実行される2回目の要求にトークンを含めないため、不正な応答が返されます。

URLをHTTPSに更新する必要があります。これにより、リダイレクトが防止され、結果として問題が解決されます。あなたが同じクライアントを使用して、複数の認証済み要求を作成したい場合もあることを、あなたのコードを変更:

using RestSharp; 
using RestSharp.Authenticators; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     // Use the HTTPS scheme 
     var client = new RestClient("https://[domain].auth0.com/api/v2/users"); 

     client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(
      "eyJhbGciJIUz.eyJhdWQi4QW5OXhCNTNlNDdjIn0.vnzGPiWA", // Update the token 
      "Bearer"); 

     var request = new RestRequest(Method.GET); 

     IRestResponse response = client.Execute(request); 

     Console.WriteLine("{0}", response.StatusCode); 
    } 
} 

あなたが本当にリダイレクトを処理し、まだトークンを送信する必要がある場合は、チェック:https://github.com/restsharp/RestSharp/issues/414

+0

João:-) httpsに変更していただきありがとうございます。私は自分のstatusCodeに「悪い要求」があります。私はWebアプリケーションからコンソールアプリケーションに変更しましたが、同じ結果が得られます。他に何か試してみるべきですか?ここで何かが恋しい? –

+0

私はAuth0アカウントに対して上記のコードを有効なトークンでテストし、正しく機能しました。最新のRestSharpバージョンとまったく同じコードを使用していることを確認してください。不正な要求が継続する場合は、返された応答に関する詳細情報を含めるようにしてください。 –

+0

あなたは素晴らしいです!ありがとうございました。それは動作します! –

関連する問題