c# - 如何将 OAuth2 与 Restsharp 一起用于 Lulu API
问题描述
我正在尝试学习如何使用新的 Lulu api 并坚持 OAuth2 授权。他们在 Curl 中提供了一个示例,但我不熟悉它。我在上一个线程上找到了响应,但它似乎不适用于此应用程序。Lulu Api 文档可以在 developer.lulu.com/public-docs 找到,但很难理解。我有多年使用 C# 用于桌面应用程序的经验,但对使用 Rest API 或 Oauth 很陌生。
这是我当前从stackoverflow上的其他问题和答案生成的代码
var client = new RestClient($"https://api.sandbox.lulu.com/auth/realms/glasstree/ptotocol/openid connect");
string clientKeySecret=" Basic ZjJjNDdmMTctOWMxZi00ZWZlLWIzYzEtMDI4YTNlZTRjM2M3OjMzOTViZGU4LTBkMjQtNGQ0Ny1hYTRLWM4NGM3NjI0OGRiYw=='";
var request = new RestRequest()
{
Method = Method.GET
};
request.AddParameter("grant_type", "client_credentials");
request.AddHeader("Accept", "application/json");
request.AddHeader("Content_Type", "application/x-www-form-urlencoded");
request.AddHeader("Authorization", clientKeySecret);
var response = client.Execute(request);
var strJSONData = response.Content;
当我运行它时,strJSONData 为空。
(ps. clientKeySecret 变量不是真实的)
以下是文档中有关如何请求令牌的内容:
授权 Lulu API 使用 OpenID Connect,这是一个建立在 OAuth 2.0 之上的身份验证层。API 使用 JSON Web Token (JWT) 来授权客户端请求,而不是交换用户名和密码。
要与 API 交互,您需要一个客户端密钥和一个客户端密钥。打开 Client Keys & Secret 页面以生成它们。
生成令牌 要与 API 交互,您首先必须生成 OAuth 令牌。这需要以下参数:
client_key client_secret grant-type 必须设置为 client_credentials 您必须向令牌端点发送一个 POST 请求一个特殊的 Authorization 标头。为方便起见,您可以直接从 API 密钥页面复制授权字符串:
curl -X POST https://api.lulu.com/auth/realms/glasstree/protocol/openid_connect/token \
-d 'grant_type=client_credentials' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Authorization: Basic ZjJjNDdmMTctOWMxZi00ZWZlLWIzYzEtMDI4YTNlZTRjM2M3OjMzOTViZGU4LTBkMjQtNGQ0Ny1hYTRjLWM4NGM3NjI0OGRiYw=='
解决方案
推荐阅读
- ios - 更新到 iOS 13 后,UITextField 的建议(电子邮件、电话号码、名字...)不会出现在键盘上方
- python - 使用熊猫阅读excel时列开始行不均匀
- r - 使用 pivot_longer 将宽列收集到多个长列 - 第 2 部分
- vue.js - Vue-router 在运行时改变模式
- java - 配置弹性搜索以侦听 0.0.0.0:9200 (IPV4)
- java - Web 应用程序如何与独立的 Java 应用程序通信
- java - 数组找不到我要找的元素
- reactjs - Jest 和 Enzyme 失败的模拟函数
- java - 如何在页面对象模型中初始化 Select 变量
- java - 在哪里嵌套操作 ArrayLists 的方法