From d7a047628ec46039224b184488fd77f149dee2ad Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 3 Aug 2025 21:19:24 +0000 Subject: [PATCH] Upload files to "/" --- powerbi_embed4.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 powerbi_embed4.py diff --git a/powerbi_embed4.py b/powerbi_embed4.py new file mode 100644 index 0000000..7d408a1 --- /dev/null +++ b/powerbi_embed4.py @@ -0,0 +1,63 @@ +import requests +import adal + +def get_access_token(client_id, client_secret): + authority_url = 'https://login.microsoftonline.com/mathworks.onmicrosoft.com' + context = adal.AuthenticationContext( + authority_url, + validate_authority=True, + api_version=None + ) + token = context.acquire_token_with_username_password( +# token = context.acquire_token_with_client_credentials( + resource='https://analysis.windows.net/powerbi/api', + username= username, + password= password, +# client_secret= secret_id, + client_id= client_id, +# scope= 'openid', +# tenant= 'mathworks.onmicrosoft.com', + ) + access_token = token['accessToken'] + return (access_token) + + +def get_embed_token(group_id, report_id, access_token): + dest = 'https://api.powerbi.com/v1.0/myorg/groups/' + group_id + '/reports/' + report_id + '/GenerateToken' + embed_url = 'https://app.powerbi.com/reportEmbed?reportId=' + report_id + '&groupId=' + group_id + headers = {'Authorization': 'Bearer ' + access_token} + settings = {'accessLevel': 'View', + 'allowSaveAs': 'false'} + +#vals.Add(new KeyValuePair("grant_type", "password")); +#vals.Add(new KeyValuePair("scope", "openid")); +#vals.Add(new KeyValuePair("resource", "https://analysis.windows.net/powerbi/api")); +#vals.Add(new KeyValuePair("client_id", "")); +#vals.Add(new KeyValuePair("client_secret", "")); +#vals.Add(new KeyValuePair("username", "")); +#vals.Add(new KeyValuePair("password", "")); + + response = requests.post(dest, data=settings, headers=headers) + print('Embed token response: ', response.status_code, response.reason, response.text) + token = response.json().get('token') + return {'token': token, 'embed_url': embed_url, 'report_id': report_id} + + +if __name__ == "__main__": + client_id = '**********' + secret_id = '********' + group_id = '********' + report_id = '*********' + password = '******' + username = '********' + + # First we get the access token for our app (?) + access_token = get_access_token(client_id, secret_id) + print('access token: {}'.format(access_token)) + + # Then we get an embed token so we can "embed" on a web page (?) + embed_token = get_embed_token(group_id, report_id, access_token) + print('embed token response', embed_token) + + # Then we can use javascript on our web page to embed the controls/data + # (TBD)