我是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"}
什么是补助金类型?
总的来说,我只需要帮助,非常感谢任何信息。
答案 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_id
和client_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"})