如何使用 OAuth 2 - OAuth 2 C# 示例

Posted

技术标签:

【中文标题】如何使用 OAuth 2 - OAuth 2 C# 示例【英文标题】:How to use OAuth 2 - OAuth 2 C# example 【发布时间】:2013-01-30 07:57:30 【问题描述】:

我必须弄清楚如何使用 OAuth 2 才能使用 Deviantart api。

我得到了 client_id 和 client_secret 部分

这里是他们提供的信息

端点

您需要使用 OAuth 2.0 向我们进行身份验证的唯一信息是您的应用的 client_idclient_secret 值,以及下面显示的端点。

OAuth 2.0 草案 10:

https://www.deviantart.com/oauth2/draft10/authorize https://www.deviantart.com/oauth2/draft10/token

OAuth 2.0 草案 15:

https://www.deviantart.com/oauth2/draft15/authorize https://www.deviantart.com/oauth2/draft15/token

安慰剂调用

第一个依赖 OAuth 2.0 身份验证的 API 调用是安慰剂调用。 在进行可能很长的真正 API 调用(如文件上传)之前检查访问令牌是否仍然有效很有用。 您可以使用以下端点之一调用它(必须提供访问令牌):

https://www.deviantart.com/api/draft10/placebo https://www.deviantart.com/api/draft15/placebo

您需要使用与您获得令牌的 OAuth 2.0 草案相对应的端点。

它总是返回以下 JSON:status: "success"

我在网上搜索并找到了这个很棒的库。

DotNetOpenAuth v4.0.1

http://www.dotnetopenauth.net/

将其添加为参考,但不知道下一步该做什么。对于如何使用 OAuth 2,即使是一个非常小的示例也非常有用

using DotNetOpenAuth;
using DotNetOpenAuth.OAuth2;

这里是deviantart提供信息的页面

http://www.deviantart.com/developers/oauth2

好的,到目前为止我得到了但没有工作

public static WebServerClient CreateClient() 
    var desc = GetAuthServerDescription();
    var client = new WebServerClient(desc, clientIdentifier: "myid");
    client.ClientCredentialApplicator = ClientCredentialApplicator.PostParameter("mysecret");
    return client;


public static AuthorizationServerDescription GetAuthServerDescription() 
    var authServerDescription = new AuthorizationServerDescription();
    authServerDescription.AuthorizationEndpoint = new Uri(@"https://www.deviantart.com/oauth2/draft15/authorize");
    authServerDescription.TokenEndpoint = new Uri(@"https://www.deviantart.com/oauth2/draft15/token");
    authServerDescription.ProtocolVersion = ProtocolVersion.V20;
    return authServerDescription;

【问题讨论】:

您是否尝试过查看 DNOA 样本? dotnetopenauth.net 是,但不工作。更新了问题 【参考方案1】:

在 ASP.NET Core 安全项目中,现在有一个现成的解决方案:

Nuget 包:AspNet.Security.OAuth.DeviantArt

【讨论】:

【参考方案2】:

现在最简单的事情是获取 Visual Studio 2013 并创建一个新的 ASP.NET Web 应用程序,选择“个人用户帐户”作为您的身份验证类型。那里有一个开箱即用的 OAuth 2 实现(在 App_Start\Startup.Auth.cs 中配置),您可以将其分割出来,然后适应您的需求。

【讨论】:

如果可能的话,我更喜欢基于客户端,例如 wpf MVC 应用程序使用 OAuth1 而不是 OAUth2。 Microsoft.Security.OWIN.OAuth 使用 OAuth 2:- nuget.org/packages/Microsoft.Owin.Security.OAuth

以上是关于如何使用 OAuth 2 - OAuth 2 C# 示例的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 C# 的 Google OAuth 2.0 登录

使用带有 C# 的 Google OAuth 2.0 登录

如何使用 OAuth 2.0 通过 Azure Active Directory 对用户进行身份验证?

如何使用 C# 访问 Yelp Fusion Api 的 OAuth2 令牌

流动客户端主题时如何在 C# HttpClient 中设置 OIDC/OAuth 不记名令牌

在 C# 中使用 google OAuth2 后如何获取电子邮件?