首页 > 解决方案 > 如何将 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=='

标签: c#.netoauth-2.0restsharp

解决方案


推荐阅读