如果我有access_token& refresh_token

时间:2017-08-29 15:56:23

标签: c# .net api oauth

好的,geesh,我真的很难全面了解这个Oauth的东西。我正在制作非常缓慢的过程。

现在,我有access_tokenrefresh_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上的协议是提供我们已经尝试过的代码,并就如何修复它提出建议。通常这就是我所做的。但老实说,我在这里迷了路。

提前谢谢!

1 个答案:

答案 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();