最近发现Blogsclub上新了开放平台功能,支持把博客接入 BlogsClub 的 OAuth 统一登录,一键授权获取博友的站点地址、头像、邮箱等信息。
本来想参照Lcrworld,把它加入评论登录系统的,但是发现我用的Twikoo不支持第三方登录(T_T)

于是把它加入了本博客的友链自助申请系统。
进入“友链申请系统”,点击“Blogsclub一键授权”,在Blogsclub系统中登录账号并进行授权,博客信息会自动填入申请。

在申请表中补全添加我站链接的友链页地址和RSS订阅地址(可选),点击“提交申请”即可。
温馨提示:使用此方式提交的友链,仍需在贵站友链页添加我站链接哦~
AI模型会自动对您的网站内容进行审核,若无违法内容,您将会收到申请成功的邮件提示,后期可使用邮件中附带的管理链接修改友链信息。请不要泄露您的管理链接地址,避免友链信息被恶意修改。
申请特权
使用此方法申请的友链,可享受免人工审核特权,申请后会秒级自动通过。
博主会定期对通过的友链进行复审,若发现链接无法访问、单向下链和违反友链规则和法律法规的行为,会进行下链并拉黑哦。
如贵站因故需要长时间停机(3 天以上)、更换链接等,请及时通过邮件(bcihal@qq.com)联系博主。
实现方法
申请者点下按钮之后,前端先向Cloudflare Worker 请求授权地址。Worker 会生成一串随机字符串作为 state,存进 KV 并设置十分钟有效期,然后拼出 BlogsClub 的授权页地址,带上 client_id、redirect_uri、response_type=code、scope=basic,email 和刚才那串 state。
这里我用的是新标签页而不是官方示例里的小窗模式,因为小窗在手机上体验很差,而整页跳转的兼容性最好。两种模式的区别是授权页地址上的display=popup参数。
博主在 BlogsClub 完成授权后,会带着一个一次性 code和原样返回的 state回跳到我们登记的回调地址。回调地址必须和应用后台登记的完全一致,否则对方会直接拒绝。
回调请求会发送到 Worker 上,第一步就是校验 state。它必须是我们签发过、且还没有被使用过的,校验通过后立即从 KV 里删掉。这一步是防 CSRF 的关键,如果没有它,攻击者可以伪造一次回调,把别人的授权码塞给我们的服务端。
校验通过之后,Worker 才用 AppID 和 AppKey 去换 access_token。
拿到令牌后,再调用博主信息接口,就得到了站点名称、头像地址、博客网址、认证状态和邮箱。到这里授权部分就完成了。
实现同款
如果你还没有我站的友链,不妨在友链自助申请系统一键授权进行申请。
如果你也想要本站的同款功能,可以参照Blogsclub的API文档,创建应用后进行接入。
如果你还没有加入Blogsclub,欢迎由此处通过我的邀请链接加入,你我均会获得一定的积分奖励。
如有任何友链或其他方面的问题,欢迎留言或给我(bcihal@qq.com)发邮件。