github actions自动调用api – 实现Microsoft 365 E5玄学订阅

2020年6月12日 2 3,811 3086字阅读10分17秒

E5的到期时间越来越近,奈何半点续期的赶脚都么有。大鸟之前介绍过E5SubBot来实现续期,奈何最近问题多多,总是出故障。

这篇文章大鸟介绍下一个新的订阅方式,利用Github Action刷Microsoft 365 E5开发者订阅API实现续订,关于订阅续期,是一种玄学,可能你啥都没弄就自动续期了,也可能你折腾的死去活来也没续期,所以,把这个当作一份希望就好。阅读本文之前,你需要了解下什么是E5以及实现续期的其他方式。

1、简介

https://github.com/wangziyingwen/AutoApiSecret

项目说明中有完整的文档说明!博主,自己走了一遍教程,并记录在此。

2、准备

1)E5管理账号

2)Github账号(不建议用常用账号)

3)记事本(用于记录ID密码等!)

3、登录以及授权等

这里默认你已经拥有了E5。如果没有,需要跟着前面的教程申请一个。

1)登陆E5管理账号注册应用。

登录地址:https://portal.azure.com/ 

登录后,首页找到【Azure Active Directory】→【应用注册】→ 【新注册】

2)注册应用程序的具体填写

2.1【名称】 按需填写,受支持的账户类型 选择【任何组织目录(任何 Azure AD 目录 – 多租户)中的帐户】

2.2【重定向URI】填写:http://localhost:53682/

2.3  最后点击【注册】,具体看图。

3)记录【应用程序(客户端)ID】

注册成功后,将【应用程序(客户端)ID】记录下来,后面要用到!

4)添加权限

点击左侧菜单【API权限】→【添加权限】 →【Microsoft Graph】→ 选中【委托的权限】,以下权限分别搜索勾选!勾选完点击按钮【添加权限】


  • Files(Files.Read.All      Files.ReadWrite.All)
  • Sites(Sites.Read.All      Sites.ReadWrite.All)
  • User(User.Read.All      User.ReadWrite.All)
  • Directory(Directory.Read.All      Directory.ReadWrite.All)
  • Mail(Mail.Read      Mail.ReadWrite)
  • MailboxSettings(MailboxSettings.Read      MailboxSettings.ReadWrite)

具体看图:

5)同意授权

在API权限页面,如果界面上有【代表xxx授予管理员同意】按钮,一定要点一下,然后同意授权!如果没有这个按钮,就不用管了!

同意授权后,如图:

4、证书和密码

1)点击左侧菜单【证书和密码】-> 【+新客户端密码】

【说明】随便填,【截止期限】随便选!点击【添加】按钮。

然后页面下方可见新建的密码,然后将【值】复制记录下来!后面会用到!

5、利用rclone来获取Token!

1)下载rclone以及获取token

下载rclone】到电脑某个盘符下,在rclone.exe同目录中,按Shift+鼠标右键,选择在【此处打开cmd窗口】或【在此处打开power shell窗口】

然后在弹出执行命令!

	./rclone authorize "onedrive" "应用程序(客户端)ID" "应用程序密码"

注意:ID和密码,就是你刚刚保存在记事本的。

执行命令后弹出网页登陆E5管理账号,然后接受授权即可!授权成功,如图:

2)授权成功后,窗口弹出得到的Token信息!复制内容

仅复制 【Paste the following into your remote machine —>】开头【<—End paste】结尾的中间部分内容!

github actions自动调用api - 实现Microsoft 365 E5玄学订阅

3)格式化token

利用搜索引擎找一个【JSON在线格式】的网站,将复制的内容格式化一下。也可以在谷歌应用商店安装JSON-handle 【下载地址】,格式化后复制refresh_token值内容!不要双引号!保留token,后面会用到。

6、克隆项目

可以直接fork项目,但是为了安全,还是建一个私有仓库更稳一点。

1)登陆Github账号,新建项目( New repository)!

名称随便,可设置为私有(Private),推荐私有。

2)Import 导入一个项目!

项目地址:https://github.com/wangziyingwen/AutoApiSecret

导入的过程略慢!,完成导入如上图。

7、配置参数

1)在线编辑你项目里的1.txt 文件,将整个refresh_token覆盖粘贴进去(原内容不要保留)。

2)依次点击上栏 【Setting】-> 【Secrets】 -> 【Add a new secret】

3)分别新建:CONFIG_ID、CONFIG_KEY

替换你的ID 和 密码!一定要注意前面r 和 单引号!

3.1 ) CONFIG_ID

id=r'应用程序(客户端)ID'

具体设置看图:

3.2 ) CONFIG_KEY

secret=r'应用程序密码'

具体设置看图:

全部设置好如图:

8、Generate token

1)打开地址:https://github.com/settings/tokens 点击【Generate new token】

2 ) 设置名字:GITHUB_TOKEN 

勾选 repo , admin:repo_hook , workflow 等选项,点击按钮【Generate token】!

9、测试效果

点击一下Github项目的星星(Star)会调用一次脚本,再点击上面的【Action】就能看到每次的运行日志,具体看图:

运行中如图:

运行成功如图:

如图展示日志,说明成功啦!!

因为只是测试成功,项目设定是每3小时运行一次,所以3小时候后再确认下是否自动运行了(ation里是否多出来几个)。不过测试成功的话应该是没问题了,过了3个小时候,在截图确认。运行了一天,发现运行的很好,如图:

GithubAction介绍

提供的虚拟环境:

· 2-core CPU · 7 GB RAM 内存 · 14 GB SSD 硬盘空间

使用限制:

  • 每个仓库只能同时支持20个 workflow 并行。
  • 每小时可以调用1000次 GitHub API 。
  • 每个 job 最多可以执行6个小时。
  • 免费版的用户最大支持20个 job 并发执行,macOS 最大只支持5个。
  • 私有仓库每月累计使用时间为2000分钟,超过后$ 0.008/分钟,公共仓库则无限制。

(如果用的公共仓库,按理,可以设定无限循环调用,然后6小时启动一次,保证24小时全天候调用)

10、最后

  • 一顿操作猛如虎,看看续期还么有,无论怎么刷API也不能100%保证能续订服务!
  • 利用github action实现定时自动调用api,保持E5开发活跃。
  • 免费,不需要额外设备/服务器,部署完不用管啦。
  • 加密版,隐藏应用id+机密,保护账号安全。
  • 项目设定每3小时自动运行一次,每次调用3轮。定时自动启动修改地方文件 .github/workflow/AutoApiSecret.yml(自行百度cron定时任务格式,最短每5分钟一次)私有仓库有限制谨慎修改!!!
  • 虽然看起来很流弊,但是不一定有oneindex好用,这是一个玄学问题,操作复杂不代表效果好。但是谁知道呢!

参考文献:


  • https://blog.432100.xyz/index.php/archives/50/
  • https://github.com/wangziyingwen/Autoapi-test
  • 我的微信
  • 分享久久乐tv免费建站技术交流等!
  • weinxin
  • 微信公众号
  • 关注本博公众号
  • weinxin
大鸟
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  0   博主  0
    • 缙哥哥 缙哥哥 7

      如何查看自己是否续期了?我也是看到你介绍了才用的!

        • 大鸟 大鸟

          @ 缙哥哥 会有提示的,不过等我续期好了就知道了。 :lol: