用户 API 密钥规范

开放重定向往往会让人紧张,在这种情况下,如果你添加 nextcloud,就意味着人们可以使用 nextcloud 上的一个 URL 在 discourse 上生成一个密钥,然后重定向回 nextcloud。

3 个赞

在第 6 步中,您具体指的是哪个 API 调用?
或者如果其他人知道,请回答!

第六步中提到的 API 调用是您希望进行的任何调用。这只是指那些执行您实际想对 discourse 站点执行的操作的调用。

在我的例子中,我有一个独立的应用程序,它会与 discourse 站点进行交互——例如,根据用户在独立应用程序中采取的操作在 discourse 站点上创建帖子。该应用程序会登录用户,用户会做一些事情,然后应用程序会发出 POST 和 PUT API 调用,以从该用户创建/编辑 discourse 帖子。

我明白了。在我的例子中,我只想让用户登录我的网站,进行 Discourse 授权,然后重定向回来,这样我的网站就可以读取他们的用户名、电子邮件、头像、ID 等信息,并在我们的网站上创建新用户。@JQ331

那么你就来错地方了,你不能用 User API 密钥来做这件事。

你需要将 Discourse 配置为 DiscourseConnect 提供商,并将你的网站配置为 DiscourseConnect 客户端。请参阅 Use Discourse as an identity provider (SSO, DiscourseConnect)

1 个赞

我说的对吗,像那样的事情我需要访问站点的密钥?

没有所谓的“主”密钥,但您确实需要 Discourse 的管理员权限才能进行配置。

您好,我尝试实现此用户 API 密钥,但似乎它有 API 速率限制。在几次 API 调用后,我收到了 429 错误。是否有相关的配置?我使用的是付费托管。

此处有关速率限制的更多信息。

如果您使用 Communiteq 进行托管,请通过您的控制面板联系我们的支持部门进行设置。

您好 @RGJ ,感谢您的回复。我的公司拥有标准版和商务版套餐,但在控制面板中看不到支持服务。我是否应该发送邮件至 team@discourse.org

1 个赞

如果您在我们 Discourse 上托管(而不是在 Communiteq 的 @RGJ 处托管),这确实是联系我们支持团队的正确方式。:+1: :slightly_smiling_face:

1 个赞

你好!
我正在编写一个应用程序来使用这个 API。
有什么方法可以从这里获取用户信息(主要是用户名)吗?
还是我需要手动询问用户名,然后再请求它?

欢迎您,@gilice

您不是指您正在使用 API 来获取 API 密钥,而是您想对用户做某事

这可能会有帮助:逆向工程 Discourse API

但如果您想获取用户的用户名,一种方法是在 admin/users 路由上搜索电子邮件地址。

如果您能说明您想做什么,那将会有所帮助。

嘿!感谢您的回复,我可能应该更好地措辞。
我想问的问题是:我可以获取属于某个用户的 API 密钥。然后,我能否在不询问其用户名并使用 getUser 方法 的情况下获取用户的个人资料(用户名、个人资料图片等)?

我不清楚这会如何运作。你想从哪里获取API密钥?正如你在流程中看到的,用户首先需要登录才能获取密钥,为此他们需要正常的登录信息。你能更详细地解释一下你想做什么吗?

1 个赞

大家好,

在我的应用程序中,我使用用户 API 密钥来实现一些 Discourse 功能。我不小心使用错误的 Discourse 帐户授权了登录(使用 /user-api-key/new API)。

我已经撤销了对错误 Discourse 帐户的应用程序访问权限。但是,当我尝试使用正确的 Discourse 帐户授权时,我收到一个错误。当我查看日志时,我发现了以下错误:

ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint “index_user_api_keys_on_client_id” DETAIL: Key (client_id)=

根据错误信息,我假设我们不能为同一个 client_id 关联 2 个用户帐户。

有什么方法可以解决这个问题吗?

另外,是否有任何 API 可以在 API 密钥被撤销时 更新用户 API 密钥的 client_id?

谢谢!

1 个赞

这具体是什么意思?

我正在编写一个代表用户通过用户 API 密钥请求数据的应用程序。目的是避免速率限制问题。该应用程序何时会遇到速率限制问题?

我认为您在寻找类似这样的东西:

3 个赞

是的!这正是我想要的。非常感谢!!!

2 个赞

我们可以获取用户 API 密钥的 openapi 规范吗?或者考虑将它们添加到现有的规范文档中。

GitHub - discourse/discourse_api_docs: Discourse API Documentation

对于下游开发者,我们更倾向于使用 openapi 来生成我们需要的接口和 API。