【发布时间】:2021-06-30 07:08:18
【问题描述】:
目前我正在使用 Salesforce 的 rest api,以便我可以在 Salesforce 中创建和更新对象。
通过使用 curl 命令,我可以发现我可以按照自己的意愿在 salesforce 中创建和更新对象。
现在我想创建一个方法,它可以像使用 curl 命令一样做。但是当我阅读下面的错误时,似乎我需要做一些事情才能获得授权。
#<Net::HTTPUnauthorized:0x000055a3702171e0>%
我想做的是这样的。
1,我想在 salesforce 中创建对象。
2、更新我需要Account对象的对象。
3,所以我想创建一个从 salesforce 中提取所有 Account 对象的方法。
4、在一个方法中我需要用access_token发送Http请求。
5,但我不知道如何设置access_token。
这是我尝试进行身份验证和获取帐户对象的 curl 命令
OAuth
curl -v https://test.salesforce.com/services/oauth2/token \
-d "grant_type=password" \
-d "client_id=3MasubgboasbboUIUBOBOUBOUBOJBUTFHBLKJHIU1rMmmDExvMtiR" \
-d "client_secret=D33ASDFAS82C0EASDFAS48E8F1C21ASFASW6EF21C4D7AASDF4EB5EF3" \
-d "username=MYNAME@COMPANY.co.jp.instance" -d "password=yatta-"
get Account curl "https://instance.my.salesforce.com//services/data/v52.0/sobjects/Account" -H "Authorization: Bearer 00D1s0023202345234pwb!AQQasdgas3eOlKbprFFRMT_SLFp.Pwt5Q07AI0uHasdgasdxmasdgas2nLiaZ.baVoLZvVVaQK"
获取帐号
curl "https://instance.my.salesforce.com//services/data/v52.0/sobjects/Account" -H "Authorization: Bearer 00D1s0023202345234pwb\!AQQasdgas3eOlKbprFFRMT_SLFp.Pwt5Q07AI0uHasdgasdxmasdgas2nLiaZ.baVoLZvVVaQK"
我尝试的代码是这样的。
def get_salesforce_company_list
# hit api and get company list
access_token = auth
uri = URI.parse("https://instance.my.salesforce.com//services/data/v52.0/sobjects/Account")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer" + access_token
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
print response
end
def auth
uri = URI.parse("https://test.salesforce.com/services/oauth2/token")
request = Net::HTTP::Post.new(uri)
request.set_form_data(
"client_id" => "jnas;jdbojasn;djlnfalsjbdbkjbljasdasknl",
"client_secret" => "asjbdabHVIVHBJNFLNLKNJDNSjbljsg",
"grant_type" => "password",
"password" => "yatta-",
"username" => "Myname@COMPANY.co.jp.INSTANCE",
)
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
auth_info = JSON.parse(response.body)
auth_info["access_token"]
end
如果有人知道如何发送 http 请求或任何想法如何解决这个问题,我将不胜感激。
编辑
在上面的代码中,“auth”方法工作正常,我可以正确获取 access_token。问题是我无法将其设置为“get_salesforce_company_list”方法并将其用作不记名令牌。
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby salesforce httprequest rest