import requests as req import json,sys,time,random #先注册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'' #在下方单引号内填入应用秘钥 # 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 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/users ',headers=headers).status_code == 200: num1+=1 print('3调用成功'+str(num1)+'次') if req.get(r'https://graph.microsoft.com/v1.0/me/messages',headers=headers).status_code == 200: num1+=1 print('4调用成功'+str(num1)+'次') if req.get(r'https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRules',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/drive/root/children',headers=headers).status_code == 200: num1+=1 print('7调用成功'+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)+'次') except: print("pass") pass while True: main() for i in range(random.randint(150,300),0,-1): print("\r"+str(i)+'秒后开始下一轮调用 ', end='') time.sleep(1)