Как аутентифицировать 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, ключ потребителя и секрет потребителя:

  1. Войдите на Salesforce.com.
  2. В разделе "Настройка" введите "Приложения" в поле "Быстрый поиск" и затем щелкните ссылку, чтобы создать приложение.
  3. В разделе "Подключенные приложения" открывшейся страницы нажмите "Создать". Введите имя, которое будет отображаться пользователям при входе в систему для предоставления разрешений вашему приложению, а также контактный адрес электронной почты.
  4. Щелкните Включить параметры OAuth и введите значение в поле URL-адрес обратного вызова. Если вы создаете настольное приложение, установите URL-адрес обратного вызова на http://localhost:33333/ или другой номер порта по вашему выбору. Если вы создаете веб-приложение, установите URL-адрес обратного вызова на страницу в своем веб-приложении, на которую должен быть возвращен пользователь после авторизации вашего приложения.
  5. Выберите объем разрешений, которые ваше приложение должно запрашивать у пользователя.
  6. Щелкните название своего приложения, чтобы открыть страницу с информацией о вашем приложении. Отображаются учетные данные клиента OAuth, ключ потребителя и секрет потребителя.

Аутентификация в Salesforce из настольного приложения

После настройки следующих свойств подключения вы готовы к подключению:

  • OAuthClientId: задайте ключ клиента в настройках приложения.
  • OAuthClientSecret: укажите секрет потребителя в настройках приложения.
  • CallbackURL: укажите URL-адрес обратного вызова в настройках приложения.
  • InitiateOAuth: установите GETANDREFRESH. Вы можете использовать InitiateOAuth, чтобы избежать повторения обмена OAuth и вручную установить свойство соединения OAuthAccessToken.

При подключении драйвер открывает конечную точку OAuth в браузере по умолчанию. Войдите в систему и предоставьте разрешения приложению. Затем драйвер выполняет следующий процесс OAuth:

  1. Получает URL-адрес обратного вызова и устанавливает маркер доступа и OAuthServerUrl для проверки подлинности запросов.
  2. Сохраняет значения OAuth в OAuthSettingsLocation для сохранения между подключениями.
  3. Заменяет возвращенный токен обновления на новый действительный токен доступа.

Использование 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';")
Другие вопросы по тегам