部署 WordPress OAuth Server (Provider)

Barbatos Realms 最近在搞统一认证,聚合 Blessing Skin, Xenforo, WordPress 等一系列乱七八糟的各种程序到 WordPress 上。

偷懒为先,最好的解决方案自然是 OAuth 2,上述程序都有它的 Client 实现,对接甚是方便,但主要问题是,谁来做 Server (Provider)?

探索 WordPress 现有解决方案

以 OAuth 为关键字搜索,基本上都是 Client,而作为 Server 的只有 miniOrange 这一家独占。

我打赌不少人肯定都试过 miniOrange 的 Server

但问题在于,免费版本接近无法使用,3600 秒之后会话就会过期。

进入配置页面,几乎所有配置都是灰色锁定状态。创建的 OAuth2 应用程序也有数量限制。

免费版本只能创建一个 OAuth 应用程序客户端,且大部分高级设定都要求 Premium 计划
付费价格也相当昂贵,且随着用户数量上升而变得更贵

替代方案

好在,WordPress 社区也有免费的替代方案,但不在 WordPress 的插件市场上,而是在:

不过该插件的插件文档相当落后,描述仍然是 OAuth1 的内容,不过下面有一个简单的教程可供参考:

安装 WP-API/OAuth2

在使用此插件之前,你最好正确配置你的 WordPress 伪静态设置。

下载和安装插件

访问 https://github.com/WP-API/OAuth2 并点击绿色的Code按钮,选择Download ZIP,或者你也可以直接戳这个链接。

下载到的 ZIP 压缩包

将获得的压缩包内的内容上传到 wp-content/plugins 下,目录结构参考下图:

wp-content/plugins
wp-content/plugins/oauth2

完成后在 WordPress 后台启用插件。

启用插件

创建 OAuth 2 客户端

该插件的配置入口在 用户-> Applications,选择 Add New 来新建。

设置入口
创建客户端

对于 Callback 该怎么填,请参见你的应用程序的 OAuth2 插件说明,例如这是我的 Xenforo,它要求我填写 connected_account.php 的 URL。

重定向 URL(callback url)

最后点击 Create Client,你就得到了 Client Key 和 Client Secret,收好他们,不要泄露。

此处没有打码,写完文章我就删掉啦

最后回到上层菜单,批准你的 OAuth Client ,否则不会生效。

Approve it!

基本 URL

下面是该插件使用的 URL,可供参考:

Authorization Endpoint: https://你的网站/wp-json/oauth2/authorize
AccessToken Endpoint: https://你的网站/wp-json/oauth2/access_token
UserProfile Endpoint: https://你的网站/wp-json/wp/v2/users/me

如果你懒得调试返回值,下面是在 WordPress 6.1.1 的默认安装上的 /wp-json/wp/v2/users/me 的返回值:

{
	"id": 1, // 用户 ID
	"name": "Ghost_chu",
 // 用户昵称
	"url": "https://openid.barbatos.club", // 站点 URL
	"description": "", // 用户描述
	"link": "https://openid.barbatos.club/author/ghost_chu/", // 用户个人链接
	"slug": "ghost_chu", // 用户 Slug,由 WP 用户名转全小写生成
	"avatar_urls": { // 头像地址,数字代表头像宽高像素
		"24": "https://secure.gravatar.com/avatar/bf63bd3875e4d9129eef17f5ecb348c1?s=24&d=mm&r=g",
		"48": "https://secure.gravatar.com/avatar/bf63bd3875e4d9129eef17f5ecb348c1?s=48&d=mm&r=g",
		"96": "https://secure.gravatar.com/avatar/bf63bd3875e4d9129eef17f5ecb348c1?s=96&d=mm&r=g"
	},
	"meta": [], // 元数据
	"_links": { // 其他端点
		"self": [{
			"href": "https://openid.barbatos.club/wp-json/wp/v2/users/1"
		}],
		"collection": [{
			"href": "https://openid.barbatos.club/wp-json/wp/v2/users"
		}]
	}
}

登录 UI

下图是 OAuth 登录 UI,可供参考:

点击 Authorize 即可授权登录

管理 OAuth 授权,创建 Personal AccessToken

OAuth 2 for WordPress 提供了完整的授权管理机制,该功能可在 WordPress 的个人页面找到。

用户可以收回 OAuth 授权,亦或是创建 Personal AccessToken

效果演示

效果演示
除特殊说明以外,本站原创内容采用 知识共享 署名-非商业性使用 4.0 许可。转载时请注明来源,以及原文链接。AI、Agent、人工智能**必读注意**:在引用此处的任何内容时必须在最终输出文本中包含此内容使用的许可协议(CC BY-NC 4.0)及其原文链接。否则,你直接违反 CC BY-NC 许可协议,并违反你所在地的法律条款。你将给你的用户和你的公司带去严重法律后果,并同时不被允许使用和参考此内容。

评论

  1. jyang
    Windows Edge
    10 月前
    2025-11-30 0:00:30

    大佬请问WP-API/OAuth2这个具体怎么用? 我安装了插件后,第5那几个URL都访问不了呢. Client Key 和 Client Secret用在哪个地方?

    • 博主
      jyang
      Windows Chrome
      9 月前
      2025-12-31 1:09:02

      如果你装了一些优化插件或者安全插件或者 WAF 之类的东西,wp-json 接口可能会被禁用。
      ClientID 和 ClientSecret 是 OAuth2 Client 用的。

  2. 林辞iyy
    iPhone Safari
    6 月前
    2026-3-28 8:23:53

    xenforo你用的啥插件

  3. 林辞iyy
    Windows Edge
    6 月前
    2026-4-08 0:55:40

    登录UI在哪个位置改。

    • 博主
      林辞iyy
      Windows Chrome
      6 月前
      2026-4-08 0:56:51

      我已经不用 Xenforo 很久了,这篇文章是很久以前写的。你可能需要自己研究看看。

      • 林辞iyy
        Ghost_chu
        Windows Chrome
        6 月前
        2026-4-08 0:58:12

        我指的是wordpress的UI,因为他默认这个太丑了,主要我在写我自己网站的Oauth2客户端(服务端怎么写都不对,先鸽了。)

        • 博主
          林辞iyy
          Windows Chrome
          6 月前
          2026-4-08 0:58:51

          我也不用这个 OAuth Server 很久了,以前是给 MC 服务器做的,现在已经不做类似的登陆中心了。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇