Dan*_*fer 5 c# oauth restsharp
我正在尝试使用RestSharp来访问Etsy的API.这是我尝试获取OAuth访问令牌的代码:
var authenticator = OAuth1Authenticator.ForRequestToken(
ConfigurationManager.AppSettings["ApiKey"],
ConfigurationManager.AppSettings["ApiSecret"]);
// same result with or without this next line:
// authenticator.ParameterHandling = OAuthParameterHandling.UrlOrPostParameters;
this.Client.Authenticator = authenticator;
var request = new RestRequest("oauth/request_token")
.AddParameter("scope", "listings_r");
var response = this.Client.Execute(request);
Run Code Online (Sandbox Code Playgroud)
Etsy告诉我签名无效.有趣的是,当我将请求生成的时间戳和随机数值输入到此OAuth签名验证工具中时,签名不匹配.此外,该工具生成的URL与Etsy一起使用,其中RestSharp生成的URL不支持.有什么我做错了或我需要用RestSharp配置的其他东西?
注意:我正在使用他们的Nuget包提供的RestSharp版本,该版本在发布时为102.5.
小智 7
我终于能够使用OAuth与RestSharp连接到Etsy API.这是我的代码 - 我希望它适合你...
RestClient mRestClient = new RestClient();
//mRestClient.BaseUrl = API_PRODUCTION_URL;
mRestClient.BaseUrl = API_SANDBOX_URL;
mRestClient.Authenticator = OAuth1Authenticator.ForRequestToken(API_KEY,
API_SHAREDSECRET,
"oob");
RestRequest request = new RestRequest("oauth/request_token", Method.POST);
request.AddParameter("scope",
"shops_rw transactions_r transactions_w listings_r listings_w listings_d");
RestResponse response = mRestClient.Execute(request);
if (response.StatusCode != System.Net.HttpStatusCode.OK)
return false;
NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(response.Content);
string oauth_token_secret = queryString["oauth_token_secret"];
string oauth_token = queryString["oauth_token"];
string url = queryString["login_url"];
System.Diagnostics.Process.Start(url);
// BREAKPOINT HERE
string oauth_token_verifier = String.Empty; // get from URL
request = new RestRequest("oauth/access_token");
mRestClient.Authenticator = OAuth1Authenticator.ForAccessToken(API_KEY,
API_SHAREDSECRET,
oauth_token,
oauth_token_secret,
oauth_token_verifier);
response = mRestClient.Execute(request);
if (response.StatusCode != System.Net.HttpStatusCode.OK)
return false;
queryString = System.Web.HttpUtility.ParseQueryString(response.Content);
string user_oauth_token = queryString["oauth_token"];
string user_oauth_token_secret = queryString["oauth_token_secret"];
Run Code Online (Sandbox Code Playgroud)
user_oauth_token和user_oauth_token_secret是用户的访问令牌和访问令牌秘密 - 这些对用户有效,直到用户撤消访问权限.
我希望这段代码有帮助!
归档时间: |
|
查看次数: |
2368 次 |
最近记录: |