前言
本文将介绍通过生成 Microsoft API 的 ID 和 Key 使用 Rclone 获取 Refresh Token , 在利用 Github Action 来无服务器定时调用 API 使得 E5 订阅续订.
本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.
获取 ID 和 密码
应用程序 ID
- 使用管理员帐户登陆 https://portal.azure.com/#home
- 左侧导航栏选择
Azure Active Directory
- 左侧导航栏选择
应用注册
- 注册应用程序
- 填写名称
- 选择
任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户
- 重定向 URI 默认选择
Web
地址填写 http://localhost:53682/ - 点击注册
- 保存生成的
应用程序(客户端) ID
,示例:f82c748c-a719-4a85-a84a-7bd23a6b5711
添加权限
- 左侧导航栏选择
API 权限
- 添加权限
- 选择
Microsoft Gaph
- 选择
委托的权限
- 依次搜索并勾选以下权限:
Files.Read.All
、Files.ReadWrite.All
、Sites.Read.All
、Sites.ReadWrite.All
、User.Read.All
、User.ReadWrite.All
、Directory.Read.All
、Directory.ReadWrite.All
、Mail.Read
、Mail.ReadWrite
、MailboxSettings.Read
、MailboxSettings.ReadWrite
. - 添加权限
- 点击
代表 xxx 授予管理员同意
创建密码
- 左侧导航栏选择
证书和密码
- 填写说明和期限
- 保存生产的客户端密码,示例:
CxA~M-kL9_05lbT~5xWRDO-Y4Oc.y8b.MS
获取 Refresh Token
- 使用
Windows
电脑下载Rclone
客户端,解压缩后进入文件夹,先不要运行
. - 在地址栏输入
CMD
后回车启动命令提示符,执行以下命令获取 API .
其中
Client_ID
和Client_secret
修改为上文生成的ID
和密码
# 示例 rclone authorize "onedrive" "f82c748c-a719-4a85-a84a-7bd23a6b5711" "CxA~M-kL9_05lbT~5xWRDO-Y4Oc.y8b.MS"
- 执行命令会跳转至浏览器,使用管理员账号密码登录授权后,命令提示符会生成
Token
. - 找到
“refresh_token”:
和,"expiry"
,复制保存两者之间
的代码,并无需复制
代码前后的双引号"
.
配置 Github Action
配置仓库及 Secrets
- 访问 https://github.com/wangziyingwen/AutoApiSecret 仓库并
fork
到自己仓库.
- 在线修改
1.txt
,将上文获取的Refresh Token
替换覆盖原有作者的 Token .
- Settings - Secrets
- 创建
Secrets
, Name 为CONFIG_ID
, Value 为id=r'应用程序(客户端) ID'
.示例:id=r'f82c748c-a719-4a85-a84a-7bd23a6b5711'
. - 创建
Secrets
, Name 为CONFIG_KEY
, Value 为secret=r'客户端密码'
.示例:secret=r'CxA~M-kL9_05lbT~5xWRDO-Y4Oc.y8b.MS'
创建 Github Token
- 右上角头像 - Settings
- 左侧 Developer settings - Personal access tokens - Generate new token
- Note 填写
GITHUB_TOKEN
- 勾选
repo
,admin:repo_hook
,workflow
点击 Generate token 完成.
测试完成
确保完成上述设置后,点击仓库的star
即可在Actions
中看到首次运行的workflow
.其中Test Api
中正常会进行 30 次调用.全部build
正常完成即代表部署成功,后续仓库会依照.github/workflow/autoapi.yml
配置文件定时调用 API.可自行根据需求修改触发机制或计划任务.
结语
目前 Microsoft 是根据订阅用户的账号 API 使用情况来定义你为开发者用户并为你免费续订.已有网友根据这个方案续订成功,续订的资格或者成功率也是个玄学,无法100%确定,不过使用 GitHub Action 无服务的部署也是非常省心和方便.后期成功续订在来本文更新.
本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.
27 条评论
Run echo
date +"%Y-%m-%d %H:%M:%S"
begin > time.logFile "2.py", line 11
SyntaxError: invalid syntax
[error]Process completed with exit code 1.https://github.com/wangziyingwen/AutoApiSecret
作者的 github .你可以提交下issue.他这个具体的python和脚本我也不是很懂.
好吧OωO
诶我这里显示Push Changes出错怎么办啊
Run ad-m/github-push-action@master
with:
env:
Started: bash /home/runner/work/_actions/ad-m/github-push-action/master/start.sh
Push to branch master
To https://github.com/Jonathon52306/AutoApiSecret.git
! [rejected] HEAD -> master (fetch first)
error: failed to push some refs to 'https://github.com/Jonathon52306/AutoApiSecret.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Error: Invalid status code: 1
code: 1
}
Error: Invalid status code: 1
看样子在action运行时,你其他地方进行了修改或者push,导致action在push时,发现目标仓库已更新和先有的不一致
我也出错了 但格式是复制你这边的
搞定了 是token的问题
请问这是哪边出的问题
https://file.masheng.fun/pic/E5github.JPG
很有可能是Settings - Secrets这块设置格式有错,在重新update一下.
真的是Secrets格式搞错了,感谢大佬φ( ̄∇ ̄o)