c# - OAuth C# 1.0 Etsy API

标签 c# oauth etsy

使用 OAuth,我尝试向 Etsy 的 API 验证 Web 表单项目。有关详细信息,请阅读获取必要的凭据:

http://www.etsy.com/developers/documentation/getting_started/oauth

在下面的代码中,我的授权 URL 返回:

https://openapi.etsy.com/v2/oauth/request_token?oauth_token=xyz

当我在浏览器中访问它时,我收到有关缺少签名的错误。我假设我的网址不正确。 Etsy 文档说我应该获取登录 url 参数。如何从我的代码中获取它?

var consumerContext = new OAuthConsumerContext
{
    SignatureMethod = SignatureMethod.HmacSha1,
    ConsumerKey = consumerKey,
    ConsumerSecret = consumerSecret,
    UseHeaderForOAuthParameters = true
};

var session = new OAuthSession(consumerContext, 
    "https://openapi.etsy.com/v2/oauth/request_token?scope=email_r%20listings_r",
    "https://openapi.etsy.com/v2/oauth/request_token",
    "https://openapi.etsy.com/v2/oauth/request_token");

IToken requestToken = session.GetRequestToken();
string authorisationUrl = session.GetUserAuthorizationUrlForToken(requestToken);
link1.NavigateUrl = authorisationUrl;

最佳答案

作为 OAuthSession 的第三个和第四个论点,我的 URL 是错误的:

        public string GetAuthorizationUrl()
    {
        var consumerContext = new OAuthConsumerContext
        {
            SignatureMethod = SignatureMethod.HmacSha1,
            ConsumerKey = m_ConsumerKey,
            ConsumerSecret = m_ConsumerKeySecret,
            UseHeaderForOAuthParameters = true
        };

        var session = CreateSession();

        requestToken = session.GetRequestToken();
        System.Web.HttpContext.Current.Session["EtsyRequestToken"] = requestToken;
        return session.GetUserAuthorizationUrlForToken(requestToken);
    }

OAuthSession CreateSession()
    {
        OAuthConsumerContext consumerContext = new OAuthConsumerContext
        {
            ConsumerKey = m_ConsumerKey,
            ConsumerSecret = m_ConsumerKeySecret,
            SignatureMethod = SignatureMethod.HmacSha1
        };

        OAuthSession session = new OAuthSession(consumerContext, "https://openapi.etsy.com/v2/oauth/request_token?scope=transactions_r",

"https://www.etsy.com/oauth/signin",

"https://openapi.etsy.com/v2/oauth/access_token");
        session.CallbackUri = new Uri(m_ReturnUri);
        return session;
    }

我使用了WEB API。以下是我使用的库:

 <package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net40" />
 <package id="Microsoft.AspNet.WebApi.Client" version="4.0.30506.0" targetFramework="net40" />
 <package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net40" />
 <package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net40" />
 <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" />
 <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
 <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40" />
 <package id="RestSharp" version="104.2.0" targetFramework="net40" />

关于c# - OAuth C# 1.0 Etsy API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388287/

相关文章:

c# - 没有给出对应于 require 形式参数的参数

asp.net - 从 OAuthWebSecurity.RegisterMicrosoftClient 请求电子邮件

java - HTTP header 中的 Spring OAuth2 访问 token

php - 将使用 $.ajax() 和 JSONP 的 API 调用替换为服务器到服务器的 API 调用

c# - 使用 XML 作为数据存储的自定义提供程序——我应该使用 XPath/XSLT 还是 DOM?

c# - asp.net Razor Pages - 根据另一个选择列表的选择更新选择列表

php - Etsy API 不会返回商店列表

php - 在 Etsy 上创建新列表

c# - 如何在 asp.net mvc 4 的服务器上缓存数据?

ruby-on-rails - Omniauth 每个请求进行多次身份验证调用?