Как аутентифицировать Salesforce через драйвер CData ODBC через OAuth?
Я установил драйвер CData ODBC для Salesforce и могу подключиться к Salesforce с помощью имени пользователя, пароля и токена безопасности. Я тоже хотел получить доступ через OAuth. Я выполнил все шаги, указанные в приведенной ниже ссылке. Как мы можем пойти дальше.
http://cdn.cdata.com/help/RFE/odbc/pg_oauth.htm
Вот мой код для подключения к Salesforce с помощью имени пользователя, пароля и токена безопасности и возможности сохранения данных в файле csv. Как сделать то же самое через OAuth?
import pyodbc
import csv
cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};User=yourusername;Password=password;Security Token=security token;")
cursor = cnxn.cursor()
query = "SELECT * from AccountPartner"
cursor.execute(query)
csvfile=open('persons.csv','w', newline='')
obj=csv.writer(csvfile)
for row in cursor:
print(row)
obj.writerow(row)
csvfile.close()
1 ответ
Необходимые инструкции приведены ниже в документации (также скопированной ниже): http://cdn.cdata.com/help/RFE/odbc/pg_oauthcustomappcreate.htm
Вам нужно будет создать настраиваемое приложение в Salesforce, а затем установить предписанные свойства подключения, связанные с OAuth, в строке подключения. Ваш код для создания соединения будет выглядеть следующим образом:
cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};OAuthClientID=MY_CONSUMER_KEY;OAuthClientSecret=MY_CONSUMER_SECRET;OAuthCallbackURL=https://localhost:33333;InitiateOAuth=GETANDREFRESH;")
Возможно, вам потребуется сначала протестировать соединение и запустить поток OAuth вне Python. Инструкции для этого процесса можно найти в разделе справки Unix ODBC (http://cdn.cdata.com/help/RFE/odbc/pg_unixODBConlinux.htm), но они также скопированы ниже.
Инструкции скопированы из документации
Создать подключенное приложение
Чтобы получить учетные данные клиента OAuth, ключ потребителя и секрет потребителя:
- Войдите на Salesforce.com.
- В разделе "Настройка" введите "Приложения" в поле "Быстрый поиск" и затем щелкните ссылку, чтобы создать приложение.
- В разделе "Подключенные приложения" открывшейся страницы нажмите "Создать". Введите имя, которое будет отображаться пользователям при входе в систему для предоставления разрешений вашему приложению, а также контактный адрес электронной почты.
- Щелкните Включить параметры OAuth и введите значение в поле URL-адрес обратного вызова. Если вы создаете настольное приложение, установите URL-адрес обратного вызова на http://localhost:33333/ или другой номер порта по вашему выбору. Если вы создаете веб-приложение, установите URL-адрес обратного вызова на страницу в своем веб-приложении, на которую должен быть возвращен пользователь после авторизации вашего приложения.
- Выберите объем разрешений, которые ваше приложение должно запрашивать у пользователя.
- Щелкните название своего приложения, чтобы открыть страницу с информацией о вашем приложении. Отображаются учетные данные клиента OAuth, ключ потребителя и секрет потребителя.
Аутентификация в Salesforce из настольного приложения
После настройки следующих свойств подключения вы готовы к подключению:
- OAuthClientId: задайте ключ клиента в настройках приложения.
- OAuthClientSecret: укажите секрет потребителя в настройках приложения.
- CallbackURL: укажите URL-адрес обратного вызова в настройках приложения.
- InitiateOAuth: установите GETANDREFRESH. Вы можете использовать InitiateOAuth, чтобы избежать повторения обмена OAuth и вручную установить свойство соединения OAuthAccessToken.
При подключении драйвер открывает конечную точку OAuth в браузере по умолчанию. Войдите в систему и предоставьте разрешения приложению. Затем драйвер выполняет следующий процесс OAuth:
- Получает URL-адрес обратного вызова и устанавливает маркер доступа и OAuthServerUrl для проверки подлинности запросов.
- Сохраняет значения OAuth в OAuthSettingsLocation для сохранения между подключениями.
- Заменяет возвращенный токен обновления на новый действительный токен доступа.
Использование unixODBC
Определите DSN
Создайте DSN, добавив запись в
odbc.ini
или.odbc.ini
. Ниже приведен пример записи DSN:[CData Salesforce Source] Driver=/opt/cdata/cdata-odbc-driver-for-salesforce/lib/libsalesforceodbc.x64.so OAuthClientID=MY_CONSUMER_KEY OAuthClientSecret=MY_CONSUMER_SECRET OAuthCallbackURL=https://localhost:33333 InitiateOAuth=GETANDREFRESH
Проверить соединение
Вы можете использовать инструмент тестирования unixODBC, isql, для выполнения SQL-запросов к Salesforce из командной строки. При проверке соединения используйте флаг -v для вывода любых сообщений от диспетчера драйверов и драйвера.
isql -v "CData Salesforce Source"
Введите здесь код Внесите изменения в строку подключения, как показано ниже
cnxn = pyodbc.connect("DRIVER={CData ODBC DRIVER for
Salesforce};InitiateOAuth='GETANDREFRESH';OAuthClientId='myclient_id';OAuthClientSecret='my_secret';callbackurl='my_redirect_uri';oauthaccesstoken='my_access_token';oauthserverurl='server_url_returned_in_oauth';OAuthRefreshToken='refresh_token';")