好的,geesh,我真的很难全面了解这个Oauth的东西。我正在制作非常缓慢的过程。
现在,我有access_token
和refresh_token
以及id_token
:
{
"access_token":"SlAV32hkKG"
"id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"token_type":"Bearer",
"refresh_token":"76c5cdeecfd1543cfd4c3e7c054780ac",
"expires_in": 3600
}
接下来,我只需要使用上面的内容来进行最终的实际API调用。请相信我,当我说我看了,但我找不到一个很好,简单,干净的代码示例,说明如何在C#.NET应用程序中进行此调用。
我尝试使用的API确实有自己的文档,这就是他们对此步骤所说的全部内容:
4。发出API请求
现在您的应用程序具有有效的访问令牌,现在可以使用它 令牌,用于向PDK API发出经过身份验证的请求。这是通过 只需在承载类型授权中包含访问令牌 您的请求的标头。授权标头看起来应该类似 到:
授权:持票人 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9 ... GmUdC2H13YMCwc30Z3l5RCrbwQ
从代码编写的角度来看,这不是很有用。他们是说当我进行最终(实际)API调用而没有实际身份验证时,但是access_token
包含为普通标头?如果是这样,标题的名称(键)是什么? Authorization: Bearer
它也是自己的标题吗?
This thread一直非常有帮助,但我仍然无法将他的例子翻译成我想要做的事情。
因为这将是一个离线应用程序,我还需要以某种方式包含`resresh_token'。
我知道SO上的协议是提供我们已经尝试过的代码,并就如何修复它提出建议。通常这就是我所做的。但老实说,我在这里迷了路。
提前谢谢!
答案 0 :(得分:1)
您需要使用access_token
设置授权标头。
这是一个例子:
var myUri = new Uri(fullpath);
var request = WebRequest.Create(myUri);
var httpRequest = (HttpWebRequest)request;
httpRequest.PreAuthenticate = true;
httpRequest.Headers.Add("Authorization", "Bearer " + access_token);
httpRequest.Accept = "application/json";
var webResponse = request.GetResponse();
var responseStream = webResponse.GetResponseStream();
if (responseStream == null) return null;
var reader = new StreamReader(responseStream, Encoding.Default);
var result = reader.ReadToEnd();
responseStream.Close();
webResponse.Close();