(self)
| 543 | return self.access_token |
| 544 | |
| 545 | def login(self): |
| 546 | with http.server.HTTPServer(("", 0), OAuthReceiver) as server: |
| 547 | state = str(uuid.uuid4()) |
| 548 | query = urllib.parse.urlencode( |
| 549 | { |
| 550 | "client_id": self.client_id, |
| 551 | "response_type": "code", |
| 552 | # offline_access required to get a refresh_token |
| 553 | "scope": "https://buildingsmartservices.onmicrosoft.com/api/read offline_access", |
| 554 | "state": state, |
| 555 | "redirect_uri": f"http://localhost:{server.server_address[1]}", |
| 556 | } |
| 557 | ) |
| 558 | webbrowser.open(f"{self.auth_endpoint}?{query}") |
| 559 | server.timeout = 75 |
| 560 | server.state = state |
| 561 | server.handle_request() |
| 562 | if server.auth_code and server.auth_state == state: |
| 563 | self.set_tokens_from_response( |
| 564 | requests.post( |
| 565 | "https://buildingsmartservices.b2clogin.com/tfp/buildingsmartservices.onmicrosoft.com/b2c_1_signupsignin/oauth2/v2.0/token", |
| 566 | params={ |
| 567 | "grant_type": "authorization_code", |
| 568 | "code": server.auth_code, |
| 569 | }, |
| 570 | ).json() |
| 571 | ) |
| 572 | |
| 573 | def get_new_access_token(self): |
| 574 | self.set_tokens_from_response( |
no test coverage detected