我在这个问题上已经有一段时间了,我认为现在该寻求帮助了。
我正在尝试使用Groovy和简单的“ curls”从salesforce Rest api获取一些基本信息。
为了从Salesforce API获取数据,我使用以下方法获取访问令牌:
def accessTokenCurl = 'curl -X post '+ salesforceUrl + '?
grant_type=password&client_id=' + clientId + '&client_secret='+clientSecret+'&username=' + userName + '&password=' +
password + ' -H "Content-Type=application/x-www-form-urlencoded"'
返回以下内容:
{
access_token=00D1x0000008cHb!ARkAQE2kWaUtv_
f4ENopZ2ntgtu21ZPAieOWn7PR3bDO4No_
epsHUbOBo8ixq23qTIK4VqdhGdbJLaCmRNyoeVn2I8hJRf8L,
instance_url=https://test123.salesforce.com,
id=https://test.salesforce.com/id/
00D1x0000008cHbeAI/0051x000000cQg1AAA,
token_type=Bearer,
issued_at=1541489804275,
signature=K4ij5MfP0iZD8J4xDeIWozuDEvnWovAc4d9yfVFpfGc=
}
看起来正确。
现在我想访问一些简单的数据:
def testcurl = "curl
https://test123.salesforce.com/services/data/v4.0/query/?
q=SELECT+contact.AccountId+from+contact+where+contact.Email
+=+mn@aety.io -H Authorization: OAuth " + accessToken
它返回错误:
[{"message":"Session expired or
invalid","errorCode":"INVALID_SESSION_ID"}]
我阅读了多个站点,可能是因为!在访问令牌中,所以我用
替换了它accessToken.replace(“!”,'\!')
似乎正确,这里是“转义”字符串:
00D1x0000008cHb!ARkAQEIE20ES9DRFoOXHiiIzFwOeGtnGBg15TYeEFz4t9TUYkSHY.guZ0bBbgRgGKXpbWZzlWrX3cDFT_LXmgBw2iGjRJA5W
如您所见,它已经在\!前面插入了\!..那么为什么它会附带无效的会话ID?!