Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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# oauth/token返回空正文_C#_Oauth_Dotnetopenauth_Access Token - Fatal编程技术网

C# oauth/token返回空正文

C# oauth/token返回空正文,c#,oauth,dotnetopenauth,access-token,C#,Oauth,Dotnetopenauth,Access Token,我在使用oauth获取客户端应用程序中的访问令牌时遇到问题。 返回的响应主体为空,但在API中我可以看到响应不是空的 tokenresponse = { "access_token":"[ACCESSTOKENVALUE]", "token_type":"bearer", "expires_in":"1200", "refresh_token":"[REFRESHTOKENVALUE]", "scope":"[SCOPEVALUE]" } API中返回令牌的方

我在使用oauth获取客户端应用程序中的访问令牌时遇到问题。 返回的响应主体为空,但在API中我可以看到响应不是空的

tokenresponse = { 
   "access_token":"[ACCESSTOKENVALUE]",
   "token_type":"bearer",
   "expires_in":"1200",
   "refresh_token":"[REFRESHTOKENVALUE]",
   "scope":"[SCOPEVALUE]"
} 
API中返回令牌的方法:

请求令牌的客户端方法是:

        public string GetAuthorizationToken(string code)
        { 
            string Url = ServerPath + "OAuth/Token"; 
            string redirect_uri_encode = UrlEncode(ClientPath);
            string param =  string.Format("code={0}&client_id={1}&client_secret={2}&redirect_uri={3}&grant_type=authorization_code",code, ClientId, ClientSecret, redirect_uri_encode);

            HttpWebRequest request = HttpWebRequest.Create(Url) as HttpWebRequest;
            string result = null;
            request.Method = "POST";
            request.KeepAlive = true;
            request.ContentType = "application/x-www-form-urlencoded";
            request.Timeout = 10000;
            request.Headers.Remove(HttpRequestHeader.Cookie);
            var bs = Encoding.UTF8.GetBytes(param);
            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(bs, 0, bs.Length);
            }

            using (WebResponse response = request.GetResponse())
            {  
                var sr = new StreamReader(response.GetResponseStream());
                result = sr.ReadToEnd();
                sr.Close();
            } 
            if (!string.IsNullOrEmpty(result))
            {
                TokenData tokendata = JsonConvert.DeserializeObject<TokenData>(result);
                return UpdateAuthorizotionFromToken(tokendata);
            } 
            return null;
        } 
公共字符串GetAuthorizationToken(字符串代码)
{ 
字符串Url=ServerPath+“OAuth/Token”;
字符串重定向_uri_encode=UrlEncode(ClientPath);
string param=string.Format(“code={0}&client_id={1}&client_secret={2}&redirect_uri={3}&grant_type=authorization_code”、code、ClientId、ClientSecret、redirect_uri_encode);
HttpWebRequest request=HttpWebRequest.Create(Url)为HttpWebRequest;
字符串结果=null;
request.Method=“POST”;
request.KeepAlive=true;
request.ContentType=“application/x-www-form-urlencoded”;
请求超时=10000;
request.Headers.Remove(HttpRequestHeader.Cookie);
var bs=Encoding.UTF8.GetBytes(参数);
使用(Stream reqStream=request.GetRequestStream())
{
请求流写入(bs,0,bs.长度);
}
使用(WebResponse=request.GetResponse())
{  
var sr=新的StreamReader(response.GetResponseStream());
结果=sr.ReadToEnd();
高级关闭();
} 
如果(!string.IsNullOrEmpty(结果))
{
TokenData TokenData=JsonConvert.DeserializeObject(结果);
返回UpdateAuthorizotionFromToken(tokendata);
} 
返回null;
} 
结果变量为空。 请让我知道,如果你有任何可能导致这一点的想法。最初我认为是因为cookies,所以我尝试从请求中删除它们。
提前感谢。

亲爱的,只需使用以下代码创建webclient,您将在tokeninfo中获得json信息。我使用了它,它的工作非常完美

        WebClient client = new WebClient();
        string postData = "client_id=" + ""
                        + "&client_secret=" + ""
                        + "&grant_type=password&username=" + "" //your username
                        + "&password=" + "";//your password :)
        string soundCloudTokenRes = "https://api.soundcloud.com/oauth2/token";
        string tokenInfo = client.UploadString(soundCloudTokenRes, postData);
然后,您可以使用仅包含来自tokeninfo的令牌的子字符串。 在声音云上上传曲目

私有void TestSoundCloudupload() {

        System.Net.ServicePointManager.Expect100Continue = false;
        var request = WebRequest.Create("https://api.soundcloud.com/tracks") as HttpWebRequest;
        //some default headers
        request.Accept = "*/*";
        request.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
        request.Headers.Add("Accept-Language", "en-US,en;q=0.8,ru;q=0.6");

        //file array
        var files = new UploadFile[] { new UploadFile(Server.MapPath("Downloads//0.mp3"), "track[asset_data]", "application/octet-stream") };
        //other form data
        var form = new NameValueCollection();
        form.Add("track[title]", "Some title");
        form.Add("track[sharing]", "public");
        form.Add("oauth_token", "");
        form.Add("format", "json");

        form.Add("Filename", "0.mp3");
        form.Add("Upload", "Submit Query");
        try
        {
            using (var response = HttpUploadHelper.Upload(request, files, form))
            {
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    Response.Write(reader.ReadToEnd());
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }
        System.Net.ServicePointManager.Expect100Continue = false;
        var request = WebRequest.Create("https://api.soundcloud.com/tracks") as HttpWebRequest;
        //some default headers
        request.Accept = "*/*";
        request.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
        request.Headers.Add("Accept-Language", "en-US,en;q=0.8,ru;q=0.6");

        //file array
        var files = new UploadFile[] { new UploadFile(Server.MapPath("Downloads//0.mp3"), "track[asset_data]", "application/octet-stream") };
        //other form data
        var form = new NameValueCollection();
        form.Add("track[title]", "Some title");
        form.Add("track[sharing]", "public");
        form.Add("oauth_token", "");
        form.Add("format", "json");

        form.Add("Filename", "0.mp3");
        form.Add("Upload", "Submit Query");
        try
        {
            using (var response = HttpUploadHelper.Upload(request, files, form))
            {
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    Response.Write(reader.ReadToEnd());
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }