我正在使用 VBA 在 Salesforce 中获得授权,然后最终想要运行 Salesforce 报告并将结果转储到 Excel 中。我已编写以下内容来处理授权,但收到 unsupported_grant_type 错误。到目前为止我的代码:
Dim XMLHTTP As New MSXML2.XMLHTTP60
Dim username As String
Dim password As String
Dim PasswordnUsername As String
Dim argumentString As String
username = "myUsername"
password = "myPassword"
PasswordnUsername = password & ":" & username
argumentString = "?grant_type=password&" & _
"client_id=abc123&" & _
"client_secret=123abc&" & _
"username=" & username & "&password=" & password
MsgBox (argumentString)
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
XMLHTTP.Open "POST", "https://mysalesforce.com/services/oauth2/token", False
XMLHTTP.setRequestHeader "content-type", "application/x-www-form-urlencoded"
XMLHTTP.setRequestHeader "Authorization", "basic " + Base64Encode(PasswordnUsername)
XMLHTTP.send (argumentString)
MsgBox (XMLHTTP.responseText)
当我打印 XMLHTTP.responseText 时,这是报告 unsupported_grant_type 的地方。
任何帮助,将不胜感激。提前致谢。
T
你正在使用。 URL 中的所有参数,不显示弹出窗口,让用户直接向 SF 输入凭据(理想情况下,如果存在用户交互而不是后端系统相互通信,您应该使用另一个 OAuth 流程 https://help.salesforce.com/articleView?id=remoteaccess_authenticate_overview.htm所以你的应用程序不处理密码,不能泄露它们)。
故障排除:
- 确保
username
您的请求中已编码。至少放%40
代替@
。如果您的尝试甚至没有出现在用户的登录历史记录中 - 用户名错误/编码不正确。
- 您可能还需要将安全令牌悄悄附加到密码中(再次查看用户的登录历史记录,可能会显示“失败:需要 API 安全令牌”)。
- 如果您使用“设置”->“我的域”功能,请检查是否允许您从通用登录
login.salesforce.com
。也许您的组织禁用了它并仅允许品牌登录域(也会影响 API 访问)。或者您的管理员可能只允许从某些 IP 登录...
- 另外你也不需要添加
Authorization: Basic
+ 用户名并在此调用中传递,您将其传递到 POST 的有效负载中,这就足够了。
如果您有 Postman、curl、SoapUI 或任何类似的客户端 - 在直接跳到 VBA 之前可能会有所帮助?
这对我有用(与Content-Type: application/x-www-form-urlencoded
header)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)