我真的很难完全理解 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
它也是自己的标题吗?
这个帖子非常有帮助,但我仍然无法将他的示例转化为我想要做的事情。
因为这将是一个离线应用程序,所以我还需要以某种方式包含“resresh_token”。
我知道这里的协议是提供我们已经尝试过的代码,并询问如何修复它的建议。通常我就是这么做的。但老实说,我在这里迷路了。
您需要使用
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();