OAuth RequestToken returning 403

本文关键字:returning RequestToken OAuth | 更新日期: 2023-09-27 18:01:54

我试图使用一个简单的类实现OAuth,但我得到一个错误

public OAuthResponse AcquireRequestToken(string uri, string method) 
{ 
    NewRequest(); 
    var authzHeader = GetAuthorizationHeader(uri, method); 
    // prepare the token request 
    var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri); 
    request.Headers.Add("User-Agent", "MyAppId/1.0.3 +http://example.pt/"); 
    request.Headers.Add("Authorization", authzHeader); 
    request.Method = method; 
    request.ContentLength = 0; 
    using (var response = (System.Net.HttpWebResponse)request.GetResponse()) 
    { 
        using (var reader = new System.IO.StreamReader(response.GetResponseStream())) 
        { 
            var r = new OAuthResponse(reader.ReadToEnd()); 
            this["token"] = r["oauth_token"]; 
            // Sometimes the request_token URL gives us an access token, 
            // with no user interaction required. Eg, when prior approval 
            // has already been granted. 
            try 
            { 
                if (r["oauth_token_secret"] != null) 
                this["token_secret"] = r["oauth_token_secret"]; 
            } 
            catch { } 
            return r; 
        } 
    } 
} 

错误就在这一行

var response = (System.Net.HttpWebResponse)request.GetResponse()

,错误是

附加信息:远程服务器返回错误:(403)禁止的。

帮忙吗?这里是完整的OAuth类https://cropperplugins.codeplex.com/SourceControl/changeset/view/65377#1710422

也服务,我试图访问它的Discogs.com API DOCS: http://www.discogs.com/developers

更新1

我已经添加了用户代理头,disgs工作人员说这是需要的,但现在我在用户代理行request.Headers.Add("User-Agent", "BandFollowerWD/1.0.3 +http://pcdev.pt/");上又出现了一个错误

The 'User-Agent' header must be modified with the appropriate property or method.

OAuth RequestToken returning 403

在搜索了更多之后,我找到了答案....我用request.UserAgent = "MyAppId/1.0.3 +http://example.pt";代替request.Headers.Add("User-Agent", "MyAppId/1.0.3 +http://example.pt");