長時間にわたってoauthを実行しようとしていたので、デスクトップアプリケーションでプロダクトコールを行うことができました。私は開発者コンソールによって生成されたアクセストークンを使用して、restsharpを使用してhttp Getコールを作成することはできますが、古いトークンが1時間後に期限切れになった後に新しいアクセストークンを取得することはできません。私はまた、フィドラーを使用しようとしたが、 "HTTP 400の悪い要求"のエラーを取得し続けます。oAuthリフレッシュトークンFiddler、デスクトップアプリケーション用のC#restsharpの例
ChannelAdvisor開発 - ドキュメント:アクセストークンを更新Link
(同様のページにアクセストークンを更新にジャンプする方法を知らないの私の無知すみません。)
oauth、restsharp googleの例、何でも何百もの投稿とフォーラムの後、これをRestsharpで動作させることはできません。 http 400またはinvalid_client以外の応答を得ようとすると悲惨です。これは、投稿が回避策としてやっていたことでした。なぜなら、restsharpは魔法のようにコールを追加し、明確なパラメータを使ってメリットがあると考えていたからです。
RestSharpコード
string s = Convert.ToBase64String(Encoding.ASCII.GetBytes(creds.appID + ":" + creds.sharedSecret));
var client2 = new RestClient("https://api.channeladvisor.com/oauth2/token?grant_type=refresh_token&refresh_token=" + creds.refreshToken);
var request2 = new RestRequest();
request2.Method = Method.POST;
request2.Parameters.Clear();
request2.AddHeader("Authorization", s);
request2.AddHeader("Content-Type", " application/x-www-form-urlencoded");
request2.AddHeader("Cache-Control", "no-cache");
IRestResponse response2 = client2.Execute(request2);
だから私はシオマネキに行って、ちょうどスクラッチパッドにサンプルコードを貼り付けし、無駄に、私のトークンを追加しました。
POST /oauth2/token HTTP/1.1
Host: api.channeladvisor.com
Authorization: Basic MY_ENCODED_APPID:SHARED_SECRET
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=refresh_token&refresh_token=xxxxxxxxxxxxxxxxxxxxxmNZtF-cpLy44DV4DQ9Q
これは400エラーも返します。 SOAP APIはユーザー名とパスワードを認証するだけで簡単でしたが、SOAPが提供していない情報が少し必要です。任意の助けを歓迎します。好ましくは、チャネルアドバイザの呼び出し形式を使用したフィドラーまたはレストシャープの例です。
あなたはrefreshtokenもの(grant_type = refresh_token&refresh_token =置く必要がある」リクエストのボディに+ creds.refreshToken)をしていないURLパラメータとして追加します。さらに、あなたが不足している 『あなたのAuthorizationヘッダーにBasicを』 – PtrBld
@PtrBldが私を正しい方向に導いた – zerodoc