curl 正在Salesforce中获取{“错误”:“无效授权”,“错误描述”:“验证失败”}?

cpjpxq1n  于 2022-11-13  发布在  其他
关注(0)|答案(9)|浏览(110)

我正在尝试获取我的销售团队partialbox的会话ID。
我的代码:

curl https://test.salesforce.com/services/oauth2/token -d "grant_type=password" -d "client_id=definitely the correct client id" -d "client_secret=definitely the correct client secret" -d "username=mymail@mail.com.partialbox" -d "password=passandsecuritytoken"

我还做了什么:

  • 在我的已连接应用程序设置中授予完全访问权限
  • 设置IP限制以放松IP限制
  • “所有使用者都可以受权自己”
  • 经过双重检查的通行证、客户端ID、客户端密码、用户名

我仍然收到错误{"error":"invalid_grant","error_description":"authentication failure"}
我搜索了SF论坛和StackOverflow问题,但是我没有找到任何解决这个问题的方法。有人知道,还有什么问题吗?

fdbelqdn

fdbelqdn1#

我仍然感到困惑,我不知道到底发生了什么,但我有你同样的问题,我能够“修复”它做以下。
一是放宽应用的IP限制。
管理应用程序-〉连接的应用程序-〉(我的应用程序的名称)
然后将“IP放宽”设置为“放宽IP限制”。
据我所知,在我使用的沙盒应用程序中没有IP限制,但我对这个还很陌生,所以也许他们藏在某个地方。
第二,在我的curl命令中,看起来很像你的,我省略了安全令牌,所以密码字段只是密码。
我真的不知道我是否已经解决了我的问题,但我得到了一个访问令牌,而不是“invalid_grant”错误。
我计划做一些额外的调查,以找出发生了什么事,但我想,当我有这个问题了,我会确保这个答案在这里。

wf82jlnq

wf82jlnq2#

请确保您已完成这些步骤。

  • 应用程序-〉管理连接的应用程序-〉(我的应用程序的名称)-〉编辑应用程序-〉OAuth策略然后将“允许的用户”设置为“所有用户都可以自行授权”。
  • 管理应用程序-〉连接的应用程序-〉(我的应用程序的名称)然后将“IP放宽”设置为“放宽IP限制”。

尝试在启用TLS 1.1的情况下发出curl请求
curl -v https://login.salesforce.com/services/oauth2/token-d“授权类型=密码”-d“客户端标识=xxxxxxxxxxxxXXXXXXXX”-d“客户端密码=123456789”-d“username=xx@abcd.com“-d“密码=xxxxxxxxxx”

9udxz4iz

9udxz4iz3#

Salesforce要求在2017年7月22日之前升级到TLS 1.1或更高版本,以符合安全性和数据完整性方面的行业最佳实践:from help.salesforce.com
如果您使用的是4.6之前的.Net版本,请尝试添加以下代码:

System.Net.ServicePointManager.SecurityProtocol = 
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

另一个选项是编辑注册表:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

请查看此链接以获取更多详细答案:Default SecurityProtocol in .NET 4.5

euoag5mw

euoag5mw4#

Here are the setting I have in my Salesforce sandbox.
So basically I have added the Profile of my REST API user to the list of App Profiles.
我的请求如下所示:

POST: https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=3MVG1ZL0ppGP2UrDck7ipSVNGs9s17mpIc3mRacC8Y_9o3r_amXxZZaasoBFbUF_r0aUvaFtIoxxx3Y5qik5&client_secret=6412349245332722664&username=YYYY@my.pc&password=XXXX
gv8xihay

gv8xihay5#

我真的很擅长为API使用随机密码,包括:,或者其他一些普通人不使用的werid密码。Salesforce似乎不喜欢API中的这些字符,所以我使用数字和字母,没有特殊字符。我已经不止一次遇到这种情况,所以希望这些东西能帮助其他人,也能帮助我。

nwlls2ji

nwlls2ji6#

您必须在连接的应用程序中添加配置文件:转到:连接的应用程序-〉配置文件-〉管理配置文件-〉应用程序配置文件分配-〉选择系统管理员-〉保存

41ik7eoe

41ik7eoe7#

将OAuth Policy Permitted Users设置更改为“All users may self-authorize”(所有用户可以自行授权)使我能够成功进行API调用。
在管理已连接的应用程序-〉编辑中找到
Screenshot of Salesforce setting

kdfy810k

kdfy810k8#

它可以是任何东西。但是......在我的例子中,我用于用户帐户的密码包含一个磅号或井号(#),Salesforce显然一点也不喜欢。当我在Postman中运行它时,得到了一个“400错误语法”的响应。
我把密码改成严格的字母数字(没有标点符号),立刻就拿到了令牌。
所以,我的建议是,如果你像我在这台电脑上做的那样,把你的手机对着墙壁撞了几个小时或更长时间,以为你疯了,就试着把密码改为字母数字字符。这可能会奏效。如果不行,那么至少你可以排除这种可能。

flvlnr44

flvlnr449#

在您的url中使用您的组织示例url,或login.salesforce.comtest.salesforce.com
服务/身份验证2/令牌

相关问题