【问题标题】:Connect API site and Get Access Token连接 API 站点并获取访问令牌
【发布时间】:2021-08-23 23:11:23
【问题描述】:

我想连接 API 站点,并获取 Access Token(oAuth2)。
此站点需要客户端 ID、客户端密码、代码和重定向 URL。
但是,现在 API 网站说“401”('未授权')。
所以,请告诉如何解决它。

我的 URL(重定向)是“http://www.localhost/hoge?puyofuga123(puyofuga123 是会话,随机字符集)。
我的源码(C#)

const string CLIENT_ID="****CLIENT_ID*****";
const string CLIENT_SECRET="****CLIENT_SECRET*****";
const string CODE = "****CODE****";
string redirectURL = context.Request.Url.ToString(); //HttpListenerContext context
Dictionary<string, string> dicRequest = new Dictionary<string, string>() {
    {"grant_type","authorization_code" },
    {"client_id",CLIENT_ID },
    {"client_secret",CLIENT_SECRET },
    {"code",CODE },
    {"redirect_uri",redirectUrl }
};
HttpClient httpClient = new HttpClient(new HttpClientHandler {AllowAutoRedirect = false});
HttpContent httpContent = new FormUrlEncodedContent(dicRequest);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

//Get Access token, but now return 401.
responseMessage = await httpClient.PostAsync("****POST_URL****", httpContent); 

【问题讨论】:

  • "所以,请告诉如何修复它。" 无需过多查看您的代码,这是特定于供应商的,如果不阅读文档,几乎不可能为您提供帮助,我个人觉得 OAuth 是一团糟,每个牛仔/女孩都可以按照他们想要的方式实现它,就像大多数网络世界一样。我建议你做的是使用邮递员,这样你就可以快速尝试,彻底彻底地重新阅读文档,如果疼痛仍然存在,请去看医生(我的意思是,联系供应商)

标签: c# oauth httpclient


【解决方案1】:

要以安全且正确的方式获取令牌,您应该在启动类中使用 AddOpenIDConnect(...) 处理程序,而不是尝试自己进行。

以安全的方式正确地进行操作非常困难。

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2017-11-02
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多