C# DotNetOpenAuth Twitter RequestUserAuthorization协议异常403错误
我正处于尝试使用DotNetOpenAuth与Twitter通信的第一阶段。 无论何时调用此方法,我都会收到以下错误: 发生原异常 远程服务器返回错误:(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
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
};
}