【发布时间】:2018-02-05 22:55:07
【问题描述】:
我正在使用 Asp.Net Core 2.0 Web Api,其中一个控制器是使用 Quickbooks API 的客户 CRUD。为了能够连接到这个 API,我必须通过 oAuth 2 进行身份验证。我不能要求用户通过他在 quickbooks 上的帐户进行身份验证,任何使用这个 API 的人都应该看不到这种集成。
我的问题是:如何在 Asp.net core 2.0 上使用 oAuth 2 进行机器对机器身份验证?
我有客户 ID 和密码。我什至做了一个调用,实际上返回给我一个不记名令牌,但是当我尝试使用这个令牌时,他们的 API 返回错误 500,这让我认为我为获取令牌所做的事情是错误的。代码如下:
var client = new RestClient("https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentials&client_id=xxxx&client_secret=yyy", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
这是回复:{"token_type":"bearer","access_token":"eyJlbmMiOixxx","expires_in":3600}
但正如我所说,这个令牌似乎无效。
你能帮帮我吗?链接,cmets,任何东西都会有用。
【问题讨论】:
-
如何发送不记名令牌?另外,在 .NET 中执行此操作之前,您是否尝试过在 PostMan 或类似工具中执行此操作?
-
在标题中。是的,使用他们的 oAuth 测试生成的令牌,它在发出请求时起作用:developer.intuit.com/v2/ui#/playground。我了解 oauth 的流程,问题是我无法向使用该应用程序的用户显示 quickbooks 授权屏幕,它必须是不可见的
-
尝试将 fiddler 放在中间并检查您的 .NET 应用程序究竟是什么发布到 intuit。
-
您是否检查了应用程序权限(又名应用程序范围?)也许您没有向客户端应用程序授予任何权限。解码令牌(是 JWT 令牌,在线查看并检查范围)。尝试使用带有 Bearer Token 的邮递员,看看是否返回解释错误。