微软office E5开发订阅及续订脚本

e5的订阅网上的教程应该挺多的,做一个小小的备忘。最主要的是可以可以使用office软件和onedrive5t网盘和25个用户许可。只不过只有三个月时间。

1、加入Microsoft 365 开发人员计划,浏览器打开网址:https://developer.microsoft.com/zh-cn/office/dev-program

点立即加入,登录个人微软账号也可以用教育邮箱。

输入相关的信息(可以随意)

设置E5订阅,创建用户名 域 密码 验证手机号

管理平台地址[使用个人账号登录]:https://portal.office.com/

注意:

可以使用国内手机号。

最好使用相对纯净的IP申请。

2、把默认空间1T修改为5T

注销上一次登录的个人帐号

用新的网页打开https://admin.onedrive.com/#v=StorageSettings

使用上面创建的管理员帐号登录,点击存储,把1024修改为5120,点保存

打开https://office.com/?auth=2登录后打开omedrive,设置,查看存储标准即可查看空间。

3、续订,可以使用GitHub action:https://github.com/wangziyingwen/AutoApiSecret

自己喜欢放在自己VPS上跑,应该也可以放在termux上跑。

python脚本:https://raw.githubusercontent.com/wangziyingwen/AutoApi/master/1.py

# -*- coding: UTF-8 -*-
import requests as req
import json,sys,time
#先注册azure应用,确保应用有以下权限:
#files:	Files.Read.All、Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All
#user:	User.Read.All、User.ReadWrite.All、Directory.Read.All、Directory.ReadWrite.All
#mail:  Mail.Read、Mail.ReadWrite、MailboxSettings.Read、MailboxSettings.ReadWrite
#注册后一定要再点代表xxx授予管理员同意,否则outlook api无法调用
###################################################################
#把下方单引号内的内容改为你的应用id                                         #
id=r'你的应用id'                         
#把下方单引号内的内容改为你的应用机密                                       #
secret=r'你的应用机密'                                           
###################################################################


path=sys.path[0]+r'/1.txt'
num1 = 0

def gettoken(refresh_token):
    headers={'Content-Type':'application/x-www-form-urlencoded'
            }
    data={'grant_type': 'refresh_token',
          'refresh_token': refresh_token,
          'client_id':id,
          'client_secret':secret,
          'redirect_uri':'http://localhost:53682/'
         }
    html = req.post('https://login.microsoftonline.com/common/oauth2/v2.0/token',data=data,headers=headers)
    jsontxt = json.loads(html.text)
    refresh_token = jsontxt['refresh_token']
    access_token = jsontxt['access_token']
    with open(path, 'w+') as f:
        f.write(refresh_token)
    return access_token
def main():
    fo = open(path, "r+")
    refresh_token = fo.read()
    fo.close()
    global num1
    localtime = time.asctime( time.localtime(time.time()) )
    access_token=gettoken(refresh_token)
    headers={
    'Authorization':access_token,
    'Content-Type':'application/json'
    }
    try:
        if req.get(r'https://graph.microsoft.com/v1.0/me/drive/root',headers=headers).status_code == 200:
            num1+=1
            print("1调用成功"+str(num1)+'次')
        if req.get(r'https://graph.microsoft.com/v1.0/me/drive',headers=headers).status_code == 200:
            num1+=1
            print("2调用成功"+str(num1)+'次')
        if req.get(r'https://graph.microsoft.com/v1.0/drive/root',headers=headers).status_code == 200:
            num1+=1
            print('3调用成功'+str(num1)+'次')
        if req.get(r'https://graph.microsoft.com/v1.0/users ',headers=headers).status_code == 200:
            num1+=1
            print('4调用成功'+str(num1)+'次')
        if req.get(r'https://graph.microsoft.com/v1.0/me/messages',headers=headers).status_code == 200:
            num1+=1
            print('5调用成功'+str(num1)+'次')    
        if req.get(r'https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRules',headers=headers).status_code == 200:
            num1+=1
            print('6调用成功'+str(num1)+'次')    
        if req.get(r'https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRules',headers=headers).status_code == 200:
            num1+=1
            print('7调用成功'+str(num1)+'次')
        if req.get(r'https://graph.microsoft.com/v1.0/me/drive/root/children',headers=headers).status_code == 200:
            num1+=1
            print('8调用成功'+str(num1)+'次')
        if req.get(r'https://api.powerbi.com/v1.0/myorg/apps',headers=headers).status_code == 200:
            num1+=1
            print('8调用成功'+str(num1)+'次') 
        if req.get(r'https://graph.microsoft.com/v1.0/me/mailFolders',headers=headers).status_code == 200:
            num1+=1
            print('9调用成功'+str(num1)+'次')
        if req.get(r'https://graph.microsoft.com/v1.0/me/outlook/masterCategories',headers=headers).status_code == 200:
            num1+=1
            print('10调用成功'+str(num1)+'次')
            print('此次运行结束时间为 : '+localtime)
    except:
        print("pass")
        pass
for _ in range(3):
    main()

创建应用https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade

名称随意,回调地址填:http://localhost:53682/

创建成功之后,将【应用程序(客户端)ID】记录下来。

生成密钥,就不用说了,都是一个套路。

点击左侧菜单【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)

在API权限页面,如果界面上有【代表xxx授予管理员同意】按钮,一定要点一下,然后同意授权。

使用rclone挂载,生成refresh_token,都是一样的套路就不说了。

修改脚本当中的客户端ID和密钥。

创建1.txt文件,填入refresh_token即可。

运行脚本:

python 1.py

自己就可以使用crontab每几个小时运行一次即可。至于能不能成功续订就看脸了。一般是到期前后30天内自动续订,到期之后会保留30天。

留言

* - 必填