Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DotNetOpenAuth Twitter RequestUserAuthorization协议异常403错误_C#_Twitter_Dotnetopenauth_Class Library - Fatal编程技术网

C# DotNetOpenAuth Twitter RequestUserAuthorization协议异常403错误

C# DotNetOpenAuth Twitter RequestUserAuthorization协议异常403错误,c#,twitter,dotnetopenauth,class-library,C#,Twitter,Dotnetopenauth,Class Library,我正处于尝试使用DotNetOpenAuth与Twitter通信的第一阶段。 无论何时调用此方法,我都会收到以下错误: 发生原异常 远程服务器返回错误:(403)禁止 public string SendConsumerAuthentication() { ServiceProviderDescription serviceProvider = GetServiceDescription(); string applicationKey = settingsManager.Ge

我正处于尝试使用DotNetOpenAuth与Twitter通信的第一阶段。 无论何时调用此方法,我都会收到以下错误:

发生原异常 远程服务器返回错误:(403)禁止

public string SendConsumerAuthentication()
{
    ServiceProviderDescription serviceProvider = GetServiceDescription();

    string applicationKey = settingsManager.GetApplicationKey(className);
    string applicationSecret = settingsManager.GetApplicationSecret(className);

    // decouple this in future
    InMemoryTokenManager inMemoryTokenManager = new InMemoryTokenManager(applicationKey, applicationSecret);

    var consumer = new DesktopConsumer(serviceProvider, inMemoryTokenManager);
    string uri = string.Empty;
    string requestToken = string.Empty;

    var requestArgs = new Dictionary<string, string> { 
        //need to pass this as extra, but leave the value blank
        { "oauth_token", string.Empty} 
    };

    //request access
    try
    {                
        uri = consumer.RequestUserAuthorization(requestArgs, null, out requestToken).AbsoluteUri;
    }
    catch (Exception)
    {
        uri = null;                
    }

    return uri;
}
公共字符串SendConsumerAuthentication()
{
ServiceProviderDescription serviceProvider=GetServiceDescription();
string applicationKey=settingsManager.GetApplicationKey(类名);
string applicationSecret=settingsManager.GetApplicationSecret(类名);
//在将来将其解耦
InMemoryTokenManager InMemoryTokenManager=新建InMemoryTokenManager(应用程序密钥,应用程序加密);
var consumer=新的桌面用户(serviceProvider,inMemoryTokenManager);
stringuri=string.Empty;
string requestToken=string.Empty;
var requestArgs=新字典{
//需要将其作为额外值传递,但将值留空
{“oauth_令牌”,string.Empty}
};
//请求访问
尝试
{                
uri=consumer.RequestUserAuthorization(requestArgs,null,out-requestToken);
}
捕获(例外)
{
uri=null;
}
返回uri;
}

我想知道我遗漏了什么?

更改端点解决了问题

发件人:

    public override ServiceProviderDescription GetServiceDescription()
    {
        return new ServiceProviderDescription
        {
            AccessTokenEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/access_token", HttpDeliveryMethods.PostRequest),
            RequestTokenEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/authorize", HttpDeliveryMethods.PostRequest),
            UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/access_token", HttpDeliveryMethods.PostRequest),
            TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement() },
            ProtocolVersion = ProtocolVersion.V10
        };
    }
致:

    public override ServiceProviderDescription GetServiceDescription()
    {
        return new ServiceProviderDescription
        {
            AccessTokenEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/access_token", HttpDeliveryMethods.PostRequest),
            RequestTokenEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/request_token", HttpDeliveryMethods.PostRequest),
            UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/authorize", HttpDeliveryMethods.PostRequest),
            TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement() },
            ProtocolVersion = ProtocolVersion.V10
        };
    }