-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Проблема с методом bx24.obtain_tokens #15
Comments
Евгений приветствую! я правильно понял вы хотите автоматически авторизоваться используя креды клиента (ид + секрет)? |
Юрий, добрый день
Да я хочу это сделать автоматически. В скрипте прописываю логин и пароль
пользователя под которым нужно соединиться с Битрикс24. У меня скрипт который
запускается в консоле и достает из Битрикс24 статистическую информацию, которую
далее мы анализируем "вручную".
С уважением,
Косенко Е.П.
03.11.2020, 00:40, Yurii Rabeshko <[email protected]>
Евгений приветствую! я правильно понял вы хотите автоматически авторизоваться
используя креды клиента (ид + секрет)?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
быстрый ответ это нельзя делать таким путем как вы хотите хотя и можно но это костыль для тестов. Bitrix24 использует OAuth 2.0 framework для авторизации 3rd party applications а конкретно он использует authorization code grant для авторизации пользователей. этот способ придуман не для скриптов а для публикации 3rd party приложений в маркетплейсе битрикса. например если вы используете какое-то приложение с маркетплейса вы прежде чем начать работу должны предоставить права (например дать доступ к вашей CRM или сотрудникам) т.е. без вашего участия приложение не продолжит работу. это причина почему вас редиректит на ауз сервер когда вы пробуете сделать автоматизированный запрос. в случае скриптов нужно использовать веб хуки которые используют апи ключ для предоставления доступа. |
Хуки пробовал - но через них не смогли получить доступ к инфоблокам. По факту я сейчас получаю все нужные параметры от страницы авторизации и напрямую их подставляю в библиотеку bx24._access_token = res['access_token'] |
странно. это повод создать тикет на битрикс24 форуме.. либо они специально ограничили доступ к этим АПИ. я могу закрывать эту ишью или у вас есть еще какие-то вопросы? |
Добрый день! |
Пример кода на котором получаю ошибку конвертации в json и пример кода как временно обхожу эту проблему
from pybitrix24 import Bitrix24
#from bitrix24 import *
from SetupData import *
import requests
from classProjectListSetting import ProjectSetup
client_id='код client_id'
client_secret='код client_secret'
bx24 = Bitrix24('inside.сайт с битрикс.ru', client_id=client_id, client_secret=client_secret, user_id= BITRIX24USERID)
url = bx24.build_authorization_url()
#далее эмулирую авторизацию пользователя на странице
user_agent_val = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
Создаем сессию и указываем ему наш user-agent
session = requests.Session()
r = session.get(url, headers = {
'User-Agent': user_agent_val
})
#Хотя , мы ранее указывали наш user-agent и запрос удачно прошел и вернул нам нужный ответ, но user-agent изменился на тот , который был по умолчанию. И поэтому мы обновляем его.
session.headers.update({'User-Agent':user_agent_val})
Получаем значение _xsrf из cookies
_xsrf = session.cookies.get('_xsrf', domain=".notamedia.ru")
Осуществляем вход с помощью метода POST с указанием необходимых данных
post_request = session.post(url, {
'backUrl': url,
'_xsrf':_xsrf,
'remember':'yes',
})
res = post_request.json()
code = res['code']
сейчас в лоб прописал, что бы код работал!
bx24._access_token = res['access_token']
bx24._refresh_token = res['refresh_token']
data = bx24.obtain_tokens(code=code) # на этой строке падаем с ошибкой преобразования в json, просмотри страницы на которую получаем показывает, что мы попадаем опять на страницу авторизации пользователя
#print(data)
на этом куске получаем ошибку (requester)
def decode_response(s):
if sys.version_info.major == 2:
return json.load(s)
else:
return json.loads(s.read().decode('utf-8'))
The text was updated successfully, but these errors were encountered: