Barbatos Realms 最近在搞统一认证,聚合 Blessing Skin, Xenforo, Wordpress 等一系列乱七八糟的各种程序到 Wordpress 上。
偷懒为先,最好的解决方案自然是 OAuth 2,上述程序都有它的 Client 实现,对接甚是方便,但主要问题是,谁来做 Server (Provider)?
探索 WordPress 现有解决方案
以 OAuth
为关键字搜索,基本上都是 Client,而作为 Server 的只有 miniOrange
这一家独占。
但问题在于,免费版本接近无法使用,3600 秒之后会话就会过期。
进入配置页面,几乎所有配置都是灰色锁定状态。创建的 OAuth2 应用程序也有数量限制。
替代方案
好在,WordPress 社区也有免费的替代方案,但不在 WordPress 的插件市场上,而是在:
不过该插件的插件文档相当落后,描述仍然是 OAuth1 的内容,不过下面有一个简单的教程可供参考:
安装 WP-API/OAuth2
在使用此插件之前,你最好正确配置你的 WordPress 伪静态设置。
下载和安装插件
访问 https://github.com/WP-API/OAuth2 并点击绿色的Code按钮,选择Download ZIP
,或者你也可以直接戳这个链接。
将获得的压缩包内的内容上传到 wp-content/plugins
下,目录结构参考下图:
完成后在 WordPress 后台启用插件。
创建 OAuth 2 客户端
该插件的配置入口在 用户-> Applications
,选择 Add New
来新建。
对于 Callback 该怎么填,请参见你的应用程序的 OAuth2 插件说明,例如这是我的 Xenforo,它要求我填写 connected_account.php
的 URL。
最后点击 Create Client,你就得到了 Client Key 和 Client Secret,收好他们,不要泄露。
最后回到上层菜单,批准你的 OAuth Client ,否则不会生效。
基本 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,可供参考:
管理 OAuth 授权,创建 Personal AccessToken
OAuth 2 for WordPress 提供了完整的授权管理机制,该功能可在 WordPress 的个人页面找到。