oauth-2.0 - 无法从 Mule Salesforce 获取访问 token

标签 oauth-2.0 salesforce mule

尝试从 SalesForce 获取访问 token 时,我无法获取访问 token 。我输入了 https://localhost:8081/AppCallback 的回调 URL .但是,当我打印出 token 时,我在浏览器中得到了 null。当我更改消费者键值时,我仍然获得成功,但似乎我没有使用该服务。这是我的配置。我向 http://localhost:8081/authorize 发送请求我回来了

您已成功授权连接器。您的访问 token ID 为:null

   <http:listener-config name="HTTP_Listener_Configuration"
            host="localhost" port="8081" doc:name="HTTP Listener 
    Configuration" />

        <sfdc:config-with-oauth name="salesforce-oauth"
            onNoToken="EXCEPTION"
       accessTokenUrl="https://app.my.salesforce.com/services/oauth2/token"

     authorizationUrl="https://app.my.salesforce.com/services/oauth2/authorize"
            consumerKey="myConsumerKey"
            consumerSecret="33388E8E" doc:name="Salesforce (OAuth)">
            <sfdc:oauth-callback-config domain="localhost"
                localPort="8081" remotePort="8081" path="AppCallBack" />
        </sfdc:config-with-oauth>

   <flow name="authorize" doc:name="authorize">
            <http:listener config-ref="HTTP_Listener_Configuration"  allowedMethods="GET" 
                path="authorize" doc:name="HTTP">
                <http:response-builder statusCode="200" reasonPhrase="You have successfully authorized the connector. Your access token id is: #[flowVars.OAuthAccessTokenId]" />
                <http:error-response-builder statusCode="404" reasonPhrase="An error has occurred authorizing the connector" />
            </http:listener>
            <sfdc:authorize immediate="TRUE" config-ref="salesforce-oauth"  display="PAGE" doc:name="Authorize at Salesforce" />
        </flow>

  <flow name="sfdctestFlow1" doc:name="readContactFlow1">
            <http:listener config-ref="HTTP_Listener_Configuration"
                path="run" doc:name="HTTP" />
            <sfdc:query config-ref="salesforce-oauth" accessTokenId="#[flowVars.OAuthAccessTokenId]"
                doc:name="Perform a query at Salesforce" query="SELECT id,lastname,lastmodifieddate from contact limit 10" />
            <foreach doc:name="For Each">
                <logger doc:name="Logger" level="INFO" message="contact: #[payload]" />
            </foreach>
            <set-payload doc:name="Set Payload to formatted output"
                value="Salesforce query returned #[payload.size()] contacts." />
            <logger doc:name="Logger" level="INFO" message="contact: #[payload]" />
        </flow>

我究竟做错了什么?为什么 Salesforce 不验证并返回访问 token ?我应该如何使用回调 URL?

最佳答案

您需要使用 Salesforce 连接器,这很容易。
考虑到您尝试的当前方法,没有用户名,但提供了密码。
如果您在以下代码中(从帖子中复制)-

  • 访问 token URL - 它是正确的(我假设您直接点击了产品)。
  • 消费者 key - 这是正确的。
  • 消费者 secret -正确
  • 用户名 - 不存在
  • 密码 - 不存在。当您尝试使用密码时,请确保您附加安全 toekn(如果已启用)

  •   <sfdc:config-with-oauth name="salesforce-oauth"
                onNoToken="EXCEPTION"
           accessTokenUrl="https://app.my.salesforce.com/services/oauth2/token"
    
         authorizationUrl="https://app.my.salesforce.com/services/oauth2/authorize"
                consumerKey="myConsumerKey"
                consumerSecret="33388E8E" doc:name="Salesforce (OAuth)">
                <sfdc:oauth-callback-config domain="localhost"
                    localPort="8081" remotePort="8081" path="AppCallBack" />
            </sfdc:config-with-oauth>
    

    关于oauth-2.0 - 无法从 Mule Salesforce 获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599490/

    相关文章:

    authentication - OAuth2 资源所有者密码凭证流程

    node.js - Google OAuth2 的 RSA 私钥/公钥

    javascript - 仅从 HTML 表单提交的字段的第一个字符

    java - 应用程序之间进行身份验证的建议(Salesforce -> Heroku)

    javascript - Google 通过 OAuth2 身份验证从 JavaScript 客户端联系 API 问题

    salesforce - 未授权端点,请检查设置->安全->远程站点设置端点

    java - 使用 mule esb 中的 servlet 从项目获取 java 转换器中的文件路径

    java - mule:xml 模式验证过滤器,其中未执行自定义错误处理程序

    transactions - Mule ESB 3.3 异常策略和回滚莫名其妙的行为

    javascript - 使用 JavaScript 进行 DeviantArt Oauth 身份验证