为什么我的POST方法返回“未授权”? C#

http://static.pmmlabs.ru/OpenPeriscope/

我按照“身份validation”下的文档提供示例和错误响应。 我在调用POST方法时收到此错误消息:

401 Unauthorized This endpoint requires authentication and no cookie value was provided, or is invalid 

令牌应该绝对包含正确的值,所以我认为它必须是代码。 这是我目前的代码:

 var client = new HttpClient(); client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8"); string json = "{" + "\"bundle_id\":\"\"," + "\"phone_number\":\"\"," + "\"session_key\":\"" + key + "\"," + "\"session_secret\":\"" + secret + "\"," + "\"user_id\":\"" + userid + "\"," + "\"user_name\":\"" + name + "\"," + "\"vendor_id\":\"81EA8A9B-2950-40CD-9365-40535404DDE4\"" + "}"; var content = new StringContent(json); System.Diagnostics.Debug.WriteLine(json); var response = await client.PostAsync("https://api.periscope.tv/api/v2/loginTwitter", content); var responseJson = await response.Content.ReadAsStringAsync(); System.Diagnostics.Debug.WriteLine(responseJson); 

我放在一起的JSON也是有效的。 如果我在日志中写出来,它看起来像这样:

 {"bundle_id":"","phone_number":"","session_key":"752365274-loPQJPpyAtwuqcJJtTqk7KlRgbdGgVQ5ahBWuItr","session_secret":"2hY9kLYCwKC3rIGGMlCt523uOy08zc8SEc7w6WSlLLViD","user_id":"752365274","user_name":"My username","vendor_id":"81EA8A9B-2950-40CD-9365-40535404DDE4"} 

我遇到了一个post,其中一个用户成功地使其工作,但它是使用“HttpWebRequest”方法,我不能使用,因为我在Xamarin Forms(PCL)编码。 使用Twitter登录API

如果你检查他自己的post的答案,你可以看到示例代码。

如何调整当前代码以成功获取JSON响应?

更新:

参数/标记应该是正确的。 一直尝试不同的解决方案/代码结构,但它一直给我“未经授权”。 这是我尝试使用的最后一个代码(试图模仿我链接的项目):

  var client = new HttpClient(); var parameters = new Dictionary { { "session_secret", secret}, { "user_id", userid}, { "phone_number", ""}, { "vendor_id", ""}, { "bundle_id", "com.bountylabs.periscope"}, { "session_key", key}, { "user_name", username} }; var jsonRequest = JsonConvert.SerializeObject(parameters); MemoryStream jsonStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonRequest)); HttpContent content = new StreamContent(jsonStream); var response = await client.PostAsync("https://api.periscope.tv/api/v2/loginTwitter", content); var responseJson = await response.Content.ReadAsStreamAsync(); var streamReader = new StreamReader(responseJson); var str = streamReader.ReadToEnd(); System.Diagnostics.Debug.WriteLine(str); 

似乎授权会话密钥或密钥存在一些问题。 如果我在你的位置,我会使用其他客户端测试我的请求,以确保我传递正确的参数(特别是对于“session_key”和“session_secret”)。

为了快速简单地进行此测试,我建议使用“Restlet Client – DHC”,这是一个Chrome扩展客户端:

您可以使用以下链接添加此扩展程序:

https://chrome.google.com/webstore/detail/restlet-client-dhc/aejoelaoggembcahagimdiliamlcdmfm?hl=en