当我尝试向 Twitter 发布消息时,出现了上述错误。如何摆脱那个错误?
堆栈跟踪如下:
Exception = {"The remote server returned an error: (407) Proxy Authentication Required."} ExceptionStatus = ProtocolError
代码:
private string GetOAuthUrl()
{
IFluentTwitter twitter;
//Override the callback url if one was entered
if (CallbackUrl != null && CallbackUrl.Trim().Length > 0)
{
twitter = FluentTwitter.CreateRequest().Configuration.UseHttps().Authentication.GetRequestToken(ConsumerKey, ConsumerSecret, CallbackUrl);
}
else
{
twitter = FluentTwitter.CreateRequest().Configuration.UseHttps().Authentication.GetRequestToken(ConsumerKey, ConsumerSecret);
}
var response = twitter.Request();
UnauthorizedToken UnauthorizedToken = response.AsToken();
string AuthorizationUrl = FluentTwitter.CreateRequest().Authentication.GetAuthorizationUrl(UnauthorizedToken.Token);
return AuthorizationUrl;
}
最佳答案
如果 fluent twitter 在幕后使用 WebRequests,那么您需要使用如下代码指定代理的凭据:
System.Net.WebRequest.DefaultWebProxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
这将告知所有 Web 请求使用运行应用程序的用户的凭据向代理进行身份验证。
要使其正常工作,您需要将应用程序配置为在已被授予代理服务器访问权限的服务帐户下运行。然后,您可以绑定(bind)此服务帐户,使其拥有尽可能少的权限来运行该服务。
如果您的应用程序需要在无权使用代理服务器的帐户下运行,您可以按如下方式明确指定凭据:
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password", "domain");
System.Net.WebRequest.DefaultProxy.Credentials = credentials;
这样做的缺点是您必须将这些凭据存储在某个地方,如果攻击者设法破坏您的应用程序,它们可能会被捕获。在某些环境中,从安全角度来看,这是 Not Acceptable 。
关于c# - 需要代理身份验证(Forefront TMG 需要授权才能完成请求。拒绝访问 Web 代理筛选器。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984101/