簡體   English   中英

如何讓 RestSharp 不向身份驗證 header 添加 oauth_callback 參數

[英]How do I get RestSharp not to add oauth_callback parameters to the Authentication header

我正在嘗試使用 RestSharp 連接到一個挑剔的 API。 API 使用 OAuth1.0 並且在初始請求令牌上僅在查詢中需要 oauth_callback 參數,而不是在身份驗證 Header 中(我已經與 Postman 確認了這一點)。 當我以這種方式構造請求時:

            var Authenticator = OAuth1Authenticator.ForRequestToken(mc_apiKey, mc_appsecret);
            Authenticator.ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader;
            Authenticator.SignatureMethod = OAuthSignatureMethod.PlainText;
            client.Authenticator = Authenticator;

            var request = new RestRequest(RequestToken, Method.POST);
            string AuthorizationCallBackURL = string.Format(LoopbackCallback);
            request.AddParameter(_oauthCallback, AuthorizationCallBackURL, ParameterType.QueryStringWithoutEncode);

並查看服務器上的日志,我在 Http 調用中看到了查詢字符串,

http://192.168.0.187:8080/xxxx/ws/oauth/initiate?oauth_callback=http://192.168.0.187:8080/provider_emailer/callback.jsp

但它也在 Authentication header 中:

    Headers:
    {Accept=[application/json, text/json, text/x-json, text/javascript, application/xml, text/xml], 
accept-encoding=[gzip, deflate], 
Authorization=[OAuth oauth_callback="http://192.168.0.187:8080/provider_emailer/callback.jsp",
oauth_consumer_key="XXXXXXXXXXXX",
oauth_nonce="cei09xm04qetk2ce",
oauth_signature="XXXXXXXXXXXXXXXX",
oauth_signature_method="PLAINTEXT",
oauth_timestamp="1591197088",
oauth_version="1.0"], 
Content-Length=[0], Content-Type=[null], 
cookie=[JSESSIONID=C8C8DB501382F7D1E52FE436600094C0], 
host=[192.168.0.187:8080], user-agent=[RestSharp/106.11.4.0]}

這會導致“NotAcceptable”響應。 使用 Postman 完成的相同請求在身份驗證 header 中沒有回調參數的情況下有效。 難道我做錯了什么? 有沒有辦法只在查詢字符串中獲取回調?

這很棘手。 我查看了代碼,當您使用沒有此參數的重載時,我們沒有將回調 URL 設置為工作流 object。 所以,你在概念上是正確的。

但是,我們必須收集所有參數(默認和請求參數)加上 OAuth 參數來構建 OAuth 簽名。 然后,我們使用參數集合並將名稱以oauth_xauth_開頭的所有參數提取到請求標頭(如果您使用HttpAuthorizationHeader ),通過這樣做,我們將您的查詢參數放入 header。

顯然,這並不理想,它看起來像一個錯誤,所以我可以建議在 RestSharp 存儲庫中打開一個問題。 應該不難修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM