def oauth2_authorization(self): """ OAuth2 """ auth_data = { 'client_id': self.app_id, 'display': 'mobile', 'response_type': 'token', 'scope': self.scope, 'v': '5.37', # "redirect_uri": "https://oauth.vk.com/blank.html", } response = yield from self.auth_session.post(self.AUTHORIZE_URL, data=auth_data) response = RequestsLikeResponse(response) response_url_query = get_url_query(response.url) if 'access_token' in response_url_query: return response_url_query # Permissions is needed logger.info('Getting permissions') # form_action = re.findall(r'<form method="post" action="(.+?)">', auth_response.text)[0] form_action = get_form_action((yield from response.text())) logger.info('Response form action: %s', form_action) if form_action: response = yield from self.auth_session.get(form_action) response = RequestsLikeResponse(response) response_url_query = get_url_query(response.url) return response_url_query try: response_json = yield from response.json() except ValueError: # not JSON in response error_message = 'OAuth2 grant access error' else: error_message = 'VK error: [{}] {}'.format( response_json['error'], response_json['error_description']) logger.error('Permissions obtained') raise VkAuthError(error_message)
def oauth2_authorization(self): """ OAuth2 """ auth_data = { 'client_id': self.app_id, 'display': 'mobile', 'response_type': 'token', 'scope': self.scope, 'v': '5.37', # "redirect_uri": "https://oauth.vk.com/blank.html", } response = yield from self.auth_session.post(self.AUTHORIZE_URL, data=auth_data) response = RequestsLikeResponse(response) response_url_query = get_url_query(response.url) if 'access_token' in response_url_query: return response_url_query # Permissions is needed logger.info('Getting permissions') # form_action = re.findall(r'<form method="post" action="(.+?)">', auth_response.text)[0] form_action = get_form_action((yield from response.text())) logger.info('Response form action: %s', form_action) if form_action: response = yield from self.auth_session.get(form_action) response = RequestsLikeResponse(response) response_url_query = get_url_query(response.url) return response_url_query try: response_json = yield from response.json() except ValueError: # not JSON in response error_message = 'OAuth2 grant access error' else: error_message = 'VK error: [{}] {}'.format(response_json['error'], response_json['error_description']) logger.error('Permissions obtained') raise VkAuthError(error_message)