通过API请求生成Salesforce OAuth令牌

时间:2017-06-02 13:17:39

标签: python salesforce

我是salesforce API的新手。目前我正在开发一个帮助方法,允许我们在salesforce沙箱中创建一个新用户。 我目前遇到的一个绊脚石是如何从salesforce获取身份验证令牌,以便我可以将其与其他请求一起传递。

这是我到目前为止的代码[python]:

def get_sf_auth_token(username, password):
req_username = 'users_name_here'
req_password = 'users_password_here'
req_url = 'https://na3.salesforce.com/services/oauth2/token'

payload = {"client_id":"COMNSUMER_KEY",
           "client_secret":"CONSUMER_SECRET",
           "username": req_username,
           "password": req_password
           }

sf_token = requests.post(req_url, data=payload)
print(sf_token.status_code)
print(sf_token.text)

我缺少的两个值是CONSUMER_KEY和CONSUMER_SECRET。我不知道这些价值来自哪里。

当我发送此请求时,我会收到以下信息:

400
{"error":"unsupported_grant_type","error_description":"grant type not supported"}

什么是补助金类型?

总的来说,我只需要帮助,非常感谢任何信息。

2 个答案:

答案 0 :(得分:2)

您需要将grant_type添加到payload。由于您使用的是用户名和密码验证流,因此grant_type密钥的值应为password

payload = {"client_id":"COMNSUMER_KEY",
           "client_secret":"CONSUMER_SECRET",
           "username": req_username,
           "password": req_password,
           "grant_type": "password" 
           }

您还需要确保将安全令牌附加到有效内容中密码的末尾。有关此问题的更多信息,请访问here

要获取client_idclient_secret,您需要在Salesforce用户界面中创建一个已连接的应用。可以找到此过程的步骤here

答案 1 :(得分:0)

我建议使用Simple-Salesforce python包,它不需要使用消费者密钥。您只需使用您的电子邮件地址,密码和安全令牌。

from simple_salesforce import SFType
from simple_salesforce import Salesforce 
sf = Salesforce(username='my_Salesforce_Email@mail.com', password='my_SF_password', security_token='my_Generated_token_from_Salesforce', client_id='This does not really matter')

然后创建看起来像:

sf.Contact.create({'FirstName' : First, 'LastName' : Last, 'Newsletter__c' : Newsletter, 'Email' : Email1, 'Phone' : Phone, 'MailingStreet' : Street+" "+Apt, 'MailingCity' : City, 'MailingPostalCode' : Postal, 'AccountId' : "001U000001ZEB89"})