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

2024-02-28

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

我得到了 client_id 和 client_secret 部分

这是他们提供的信息

端点

使用 OAuth 2.0 向我们进行身份验证时所需的唯一信息是client_id and client_secret您的应用程序的值以及如下所示的端点。

OAuth 2.0 草案 10:

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

OAuth 2.0 草案 15:

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

安慰剂通话

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

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

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

它始终返回以下 JSON:{status: "success"}

我在网上搜索并发现了这个很棒的图书馆。

DotNetOpenAuth v4.0.1

http://www.dotnetopenauth.net/ http://www.dotnetopenauth.net/

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

using DotNetOpenAuth;
using DotNetOpenAuth.OAuth2;

这是 deviantart 提供信息的页面

http://www.deviantart.com/developers/oauth2 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;
}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 OAuth 2 - OAuth 2 C# 示例 的相关文章

随机推荐

  • 任务中重新抛出异常 (TPL) 丢失堆栈跟踪

    我有重新抛出异常的代码 当我后来从 task Exception 读取异常时 它的堆栈跟踪指向我重新抛出异常的位置 如我所料 第 n 行而不是第 m 行 为什么会这样呢 TPL 中的错误或更可能是我忽略的东西 当我解决方法时 我可以将异常包
  • Visual Studio Code - 按文件夹对待处理的更改进行分组

    由于某些受支持的扩展 我想摆脱当前的 IDE Jetbrains 并迁移到 Visual Studio Code VS Code 中我只缺少一件事 如果我在源代码管理中有多个文件作为待处理的更改 它们只会显示为平面列表 例如IntelliJ
  • swiftui 如何从详细信息到编辑视图获取核心数据值

    通过使用核心数据构建应用程序来学习 swiftui 陷入AddEdit的Detail到Edit的数据流向问题 从 AddEdit 到 List 以及从 List 到 Detail 的流程都可以 在网上搜索但没有找到有用的信息或者我不明白 这
  • 合并到特定提交

    我创建了一个名为newbranch来自mastergit 中的分支 现在我已经完成了一些工作并想要合并newbranch to master 但是 我做了一些额外的更改newbranch我想合并newbranch直到倒数第四次提交maste
  • 使用 watchOS2 中的 WatchConnectivity 在 iOS 和 WatchOS 之间发送消息

    我看了WWDC2015 看到现在可以在手表上开发原生应用了 这开启了很多功能 我想知道如何在我的 iOS 应用程序和 AppleWatch 应用程序之间发送数据 我看到有一个新的框架叫做WatchConnectivity 我如何使用它以及来
  • pandas 可以在视图或切片上使用替换方法来修改原始数据帧吗?

    我想替换数据框中的某些单元格值 如果它们在一个组内 但如果它们在其他组内则不替换 例如 我创建以下数据框 import pandas as pd df pd DataFrame a 2 3 b 2 3 a 3 3 columns 1st 2
  • Loopback4 中的事务支持吗?

    Loopback4如何支持事务 有没有类似的装饰器 比如 Transaction 我查看了这里的文档https loopback io doc en lb4 Repositories html https loopback io doc e
  • 等宽 Unicode 字体

    谁能告诉我涵盖大部分 unicode 字符的等宽字体吗 如果没有 那么包含大部分欧洲语言字符集的等宽字体 我也在寻找单一空间 丰富的 Unicode 字体 到目前为止 我使用 DejaVu Sans Mono 但我想知道是否有更好的 对我来
  • 当 applicationDidBecomeActive 被调用时如何告诉活动视图控制器?

    我觉得我在这里缺少一个技巧 我只想在调用 applicationDidBecomeActive 时在当前活动视图控制器上调用 viewDidLoad 或 viewDidAppear 这样当应用程序从后台再次启动时 我可以重置一些动画或其他内
  • 如何防止 Vuex 干扰我的类实例?

    我试图在 Vuex 中存储一个类的实例 EditorState https prosemirror net docs ref state EditorState来自散文镜 这个类从外部来看或多或少是不可变的 这意味着每当我想对其进行更改时
  • Bash 中使用“echo”变量覆盖文本问题

    我使用 OS X 10 6 5 Bash 当我运行这个时 echo IP echo of echo IPLINES 我得到这个输出 219 80 4 150 3128 of 1108 当我运行这个时 echo IP of IPLINES 我
  • App Engine 数据存储区 - 开发服务器限制

    我正在尝试测试 Google App Engine 数据存储数据库的效率 我想知道它查询大型数据集的速度有多快 总的来说 我的意思是大约 5 1000 万个同类实体 devserver 只允许我输入 1000 个同类实体 有办法提高这个限制
  • 如何使用 TestNg 和 eclipse 在其他浏览器完成后在多个浏览器中运行 Selenium webdriver 测试用例

    我想在所有多个浏览器中运行 selenium webdriver 测试用例但不是并行的是否可以在不使用xml和selenium网格的情况下在所有多个浏览器中运行测试用例 我们可以通过使用注释和java类来做到这一点 我希望我的测试用例应该首
  • 是否存在作为典型内联块存在的 HTML 元素?

    The div是典型的块级元素 并且span是内联对应项 它们是该显示类型的最简单的形式 没有其他属性 在很多情况下 我会给它们中的任何一个风格 display inline block 这使得它们的行为方式非常方便 为了div这意味着盒子
  • JavaScript 基本替换同一字符串中的两个字符

    I have var foo bar foo replace replace 所以 我得到bar没有括号 有更好的方法吗 你可以使用 foo foo replace g 这涉及一个简单的正则表达式 它匹配左括号或右括号的所有实例 请注意 您
  • Ubuntu 重启后 Google Chrome 丢失 cookies [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 几天来我遇到了奇怪的问题 当我重新启动系统甚至重新登录时 我会在我登录或单击 记住我 的网站上注销 问题仅出现在 Google Chrom
  • 在 C# 中使用 MySQLConnection 无法正确关闭

    我尝试编写一个类来使 MySql 连接更容易 我的问题是 在我打开连接并关闭它之后 它在数据库中仍然打开并被中止 当然 我使用的是 using 语句 但连接仍然打开 并在退出程序后中止 我的代码如下所示 using DatabaseMana
  • 对大于屏幕尺寸的侧边栏进行位置粘性

    我有一个侧边栏 其高度大于屏幕尺寸 并且在使用时position sticky 除非滚动到页面末尾 否则我将无法看到侧边栏的底部 例如 如何确保滚动时页面的 50 已经显示侧边栏的下部 这里的代码示例 https jsfiddle net
  • ActionBar 操作项未显示[重复]

    这个问题在这里已经有答案了 我有一个非常简单的代码 但即使经过长时间的谷歌搜索也无法解决问题 我想在我的 ActionBar 中添加一些 Action Items 但是每当我运行应用程序时 我看到的只是一个带有应用程序徽标和标题的 Acti
  • 如何使用 OAuth 2 - OAuth 2 C# 示例

    我必须弄清楚如何使用 OAuth 2 才能使用 Deviantart api 我得到了 client id 和 client secret 部分 这是他们提供的信息 端点 使用 OAuth 2 0 向我们进行身份验证时所需的唯一信息是cli