I was having the same problem as you and it was something to do with my signature.
This code works for me.
GetApiData(New Uri("http://fantasysports.yahooapis.com/fantasy/v2/game/nfl/stat_categories"), aToken, "C:\Users\Shane\Desktop\categories.xml")
</br> GetApiData(New Uri("http://fantasysports.yahooapis.com/fantasy/v2/game/nfl/stat_categories"), aToken, "C:\categories.xml")</br></br> Public Sub GetApiData(u As Uri, aToken As AccessToken, filename As String)</br></br> Dim strNormalizedUrl, strNormalizedRequestParameters, strSignature, strNonce, strTimeStamp, strResponse As String</br> Dim xmlDoc As Xml.XmlDocument</br></br> strNonce = Me.GenerateNonce</br> strTimeStamp = Me.GenerateTimeStamp</br></br></br> strSignature = Me.GenerateSignature(u, ConsumerKey, ConsumerSecret, aToken.oAuthToken, aToken.oAuthTokenSecret, "GET", strTimeStamp, strNonce, strNormalizedUrl, strNormalizedRequestParameters)</br></br> strNormalizedRequestParameters &= "&oauth_signature=" + UrlEncode(strSignature)</br></br> strResponse = DoWebRequest(strNormalizedUrl & "?" & strNormalizedRequestParameters)</br></br> xmlDoc = New Xml.XmlDocument</br></br> xmlDoc.LoadXml(strResponse)</br></br> File.Delete(filename)</br></br> xmlDoc.Save(filename)</br></br> End Sub</br></br> Private Function DoWebRequest(url As String) As String</br> Dim strResponse As String = ""</br> Dim request As HttpWebRequest</br> Dim response As WebResponse</br> Dim reader As StreamReader</br> Try</br></br> request = DirectCast(WebRequest.Create(url), HttpWebRequest)</br> request.Method = "GET"</br></br> response = request.GetResponse</br></br> reader = New StreamReader(response.GetResponseStream)</br></br> strResponse = reader.ReadToEnd()</br></br> Catch ex As Exception</br></br> End Try</br></br> Return strResponse</br> End Function</br></code>