def __init__(self): proxies = getproxies() if len(proxies) == 0: http_provider = onedrivesdk.HttpProvider() else: from onedrivesdk.helpers.http_provider_with_proxy import HttpProviderWithProxy http_provider = HttpProviderWithProxy(proxies, verify_ssl=True) auth_provider = onedrivesdk.AuthProvider(http_provider=http_provider, client_id=self.APP_CLIENT_ID, session_type=od_api_session.OneDriveAPISession, scopes=self.APP_SCOPES) self.client = onedrivesdk.OneDriveClient(self.APP_BASE_URL, auth_provider, http_provider)
def get_profile(self): """ Discover the OneDrive for Business resource URI reference: https://github.com/OneDrive/onedrive-api-docs/blob/master/auth/aad_oauth.md util link: https://github.com/OneDrive/onedrive-api-docs """ # more detailed: ?$expand=children url = self.APP_ENDPOINT + '_api/v1.0/me/files/root' headers = { 'Authorization': 'Bearer ' + self.auth_provider.access_token } proxies = getproxies() if len(proxies) == 0: proxies = None response = requests.get(url, headers=headers, proxies=proxies, verify=True) data = response.json() if response.status_code != requests.codes.ok: raise ValueError('Failed to read user profile:' + data['error']['message']) data['account_type'] = self.ACCOUNT_TYPE url = self.ACCESS_TOKEN_URL content = { 'grant_type': 'authorization_code', 'code': self.code, 'redirect_uri': self.REDIRECT_URL, 'scope': self.SCOPES, 'client_id': self.APP_ID, 'client_secret': self.APP_SECRET } response = requests.post(url, content) resp = response.json() token = resp['access_token'] data['refresh_token'] = token url = self.BASE_URL + 'me/' headers = {'Authorization': 'Bearer ' + token} response = requests.get(url, headers=headers) resp = response.json() data['name'] = resp['displayName'] data['first_name'] = resp['givenName'] data['last_name'] = resp['surname'] data['emails'] = resp['mail'] # End user information return account_profile.OneDriveAccountBusiness(data)
def __init__(self, endpoint=None): proxies = getproxies() if len(proxies) == 0: self.http_provider = onedrivesdk.HttpProvider() else: from onedrivesdk.helpers.http_provider_with_proxy import HttpProviderWithProxy self.http_provider = HttpProviderWithProxy(proxies, verify_ssl=True) self.auth_provider = onedrivesdk.AuthProvider(self.http_provider, self.APP_CLIENT_ID_BUSINESS, session_type=od_api_session.OneDriveAPISession, auth_server_url=self.APP_AUTH_SERVER_URL_BUSINESS, auth_token_url=self.APP_TOKEN_URL_BUSINESS) if (endpoint is not None): self.client = onedrivesdk.OneDriveClient(endpoint + '_api/v2.0/', self.auth_provider, self.http_provider)
def get_profile(self, user_id='me'): """ Fetch basic profile of the specified user (Live ID). :param str user_id: (Optional) ID of the target user. :return od_models.account_profile.OneDriveUserProfile: An OneDriveUserProfile object that od_models the user info. """ url = 'https://apis.live.net/v5.0/' + user_id headers = {'Authorization': 'Bearer ' + self.client.auth_provider.access_token} proxies = getproxies() if len(proxies) == 0: proxies = None response = requests.get(url, headers=headers, proxies=proxies, verify=True) if response.status_code != requests.codes.ok: raise ValueError('Failed to read user profile.') data = response.json() data['account_type'] = self.ACCOUNT_TYPE return account_profile.OneDriveAccountPersonal(data)
def get_profile(self): """ Discover the OneDrive for Business resource URI reference: https://github.com/OneDrive/onedrive-api-docs/blob/master/auth/aad_oauth.md util link: https://github.com/OneDrive/onedrive-api-docs """ url = self.APP_ENDPOINT + '_api/v1.0/me/files/root' #more detailed: ?$expand=children headers = {'Authorization': 'Bearer ' + self.auth_provider.access_token} proxies = getproxies() if len(proxies) == 0: proxies = None #print('get from: curl --header "' + str(headers) + '" ' + str(url)) response = requests.get(url, headers=headers, proxies=proxies, verify=True) data = response.json() if response.status_code != requests.codes.ok: raise ValueError('Failed to read user profile:' + data['error']['message']) data['account_type'] = self.ACCOUNT_TYPE #Get user informations print('Need authenticate again to get personal information') app_id = '0e170d2c-0ac5-4a4f-9099-c6bb0fb52d0c' app_secret = 'xdGsBCTOiCHxBWJcKyK2WpA' base_url = 'https://graph.microsoft.com/v1.0/' access_token_url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token' authorize_url = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize' redirect_url = 'https://onedrivesite.mario-apra.tk/' auth_url = authorize_url + '?client_id=' + app_id + '&response_type=code&redirect_uri=https%3A%2F%2Fonedrivesite.mario-apra.tk%2F&scope=User.Read' translator = od_i18n.Translator(('od_pref', ), locale_str=str(locale.getlocale()[0])) click.echo(translator['od_pref.authenticate_account.paste_url_note']) click.echo('\n' + click.style(auth_url, underline=True) + '\n') click.echo(translator['od_pref.authenticate_account.paste_url_instruction'].format( redirect_url=click.style(redirect_url, bold=True))) url = click.prompt(translator['od_pref.authenticate_account.paste_url_prompt'], type=str) code = extract_qs_param(url, 'code') click.echo() url = access_token_url content = { 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': redirect_url, 'scope': 'User.Read', 'client_id': app_id, 'client_secret': app_secret } response = requests.post(url, content) resp = response.json() token = resp['access_token'] data['refresh_token'] = token url = base_url + 'me/' headers = {'Authorization': 'Bearer ' + token} response = requests.get(url, headers=headers) resp = response.json() data['name'] = resp['displayName'] data['first_name'] = resp['givenName'] data['last_name'] = resp['surname'] data['emails'] = resp['mail'] #End user informations return account_profile.OneDriveAccountBusiness(data)