【问题标题】:devdefined OAuth IConsumerRequest errordevdefined OAuth IConsumerRequest 错误
【发布时间】:2010-11-05 11:28:29
【问题描述】:

我收到此错误:

"对于 RSASSA-PKCS1-v1_5 签名方法,您必须使用带有附加 AssymetricAlgorithm "key" 参数的构造函数"

当我尝试使用我的 IOAuthSession 对象发出请求时。

我假设它指的是 IOAuthSession 构造函数,但 IOAuthSession 在构造函数中没有“key”参数。

这是我的代码:

IOAuthSession consumerSession = new OAuthSession(consumerContext, requestTokenUrl,     UserAuthoriseUrl, accessTokenUrl);

   IConsumerRequest getOrganisationRequest = consumerSession
            .Request()
            .ForMethod("GET")
            .ForUri(new Uri("https://api.xero.com/api.xro/2.0/Organisation"))
            .SignWithToken(accessToken);

任何帮助将不胜感激。

【问题讨论】:

    标签: c# oauth devdefined-oauth


    【解决方案1】:

    我认为错误信息是错误的,没有构造函数重载需要一个键。

    也就是说,我认为问题在于您没有将密钥分配给消费者上下文:

    你应该有这样的东西:

    var consumerContext = new OAuthConsumerContext
    {
      ConsumerKey = "weitu.googlepages.com",
      SignatureMethod = SignatureMethod.RsaSha1,
      Key = certificate.PrivateKey // this is what you're missing
    };
    
    IOAuthSession consumerSession = new OAuthSession(consumerContext, requestTokenUrl,     UserAuthoriseUrl, accessTokenUrl);
    
    ...
    

    如果有帮助,请告诉我。

    【讨论】:

    • 感谢您的回复,我认为我的问题是我在共享 Web 服务器上使用的 asp.net 用户帐户没有访问我证书上的私钥的权限,所以consumercontext 没有设置的键值。 certificate.PrivateKey.KeySize 返回未设置为对象实例的对象引用,因此当我尝试发出请求时,它会从密钥的消费者上下文中获取空值。我已与我的 isp 谈过更改我对证书的访问级别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2016-08-23
    • 2019-01-01
    相关资源
    最近更新 更多